PyTorch是Torch在Python上的衍生,与TensorFlow不同的是,它在搭建神经网络时不是先建立好一个静态图,然后再把数据放到图计算,而是一个动态的过程,边搭图边计算。
PyTorch与Numpy对比:
Torch自称为神经网络界的Numpy,因为他能将torch产生的tensor放在GPU中加速运算,就像Numpy会把array放在CPU中加速运算。不过,torch和Numpy能够很好地兼容,自由地相互转换Numpy array和torch tensor。
PyTorch数据的数学中详细介绍了各种运算函数。
例如:
numpy数据与torch数据相互转换
np_data = np.arange(6).reshape((2,3))
torch_data = torch.from_numpy(np_data)
tensor2array = torch_data.numpy()
''' output
numpy [[0 1 2]
[3 4 5]]
torch tensor([[0, 1, 2],
[3, 4, 5]], dtype=torch.int32)
tensor2array [[0 1 2]
[3 4 5]]
'''
点积
data = [[1,2],[3,4]]
tensor = torch.FloatTensor(data)
data = np.array(data)
print(
'\nnumpy:',data.dot(data),
'\ntorch:',tensor.dot(tensor)
)
print('numpy:',data.dot(data))
print('torch:',tensor.dot(tensor))
''' output
numpy: [[ 7 10]
[15 22]]
RuntimeError: dot: Expected 1-D argument self, but got 2-D
(新版本torch只支持1D矩阵的点积)