莫烦python视频学习笔记 视频链接https://www.bilibili.com/video/BV1Vx411j7kT?from=search&seid=3065687802317837578
1、Numpy与Pytorch的数据转换
import torch
import numpy as np
np_data = np.arange(6).reshape((2,3))
torch_data = torch.from_numpy(np_data) # numpy数据转换为torch数据
tensor2array = torch_data.numpy() # 再转换成numpy数据
print('\nnumpy:', np_data)
print('\ntorch:', torch_data)
print('\n', tensor2array)
输出:
numpy: [[0 1 2]
[3 4 5]]
torch: tensor([[0, 1, 2],
[3, 4, 5]], dtype=torch.int32)
[[0 1 2]
[3 4 5]]
2、Numpy与Pytorch的数据的运算
(1)绝对值
# abs
data = [-1, -2, 1, 2]
tensor = torch.FloatTensor(data)
print('\nnumpy:', np.abs(data),
'\ntorch:', torch.abs(tensor))
输出:
numpy: [1 2 1 2]
torch: tensor([1., 2., 1., 2.]
(2)sin值
# sin
data = [-1, -2, 1, 2]
tensor = torch.FloatTensor(data)
print('\nnumpy:', np.sin(data),
'\ntorch:', torch.sin(tensor))
输出:
numpy: [-0.84147098 -0.90929743 0.84147098 0.90929743]
torch: tensor([-0.8415, -0.9093, 0.8415, 0.9093])
(3)矩阵相乘
# 矩阵相乘
data = [[1, -2], [3, 2]]
tensor = torch.FloatTensor(data)
print('\nnumpy:', np.matmul(data,data),
'\ntorch:', torch.mm(tensor,tensor))
输出:
numpy: [[-5 -6]
[ 9 -2]]
torch: tensor([[-5., -6.],
[ 9., -2.]])
用dot处理矩阵相乘
# 矩阵相乘
data = [[1, 2],[3,4]]
data = np.array(data)
print('\nnumpy:', data.dot(data))
输出:
numpy: [[ 7 10]
[15 22]]
data =[[3,2],[3,4]]
tensor = torch.FloatTensor(data)
print('\ntorch:', tensor.dot(tensor))
此时会报错,因为这是由于在pytorch0.3之后,tensor.dot()方法进行了更新,只能对1维的tensor进行点成运算。所以只要检查一下自己输入的tensor是否为1维。
# 矩阵相乘
data =[3,2]
tensor = torch.FloatTensor(data)
print('\ntorch:', tensor.dot(tensor))
输出:
torch: tensor(13.)