本文主要介绍pytoch和numpy的数据之间的转化和pytorch中张量tensor的使用
使用numpy新建一个一维数组
import torch
import numpy as np
np_data = np.arange(6)
print(np_data,type(np_data))
[0 1 2 3 4 5] <class 'numpy.ndarray'>
把数组转化为二维
import torch
import numpy as np
np_data = np.arange(6)
print(np_data,type(np_data))
np_data = np_data.reshape((2,3))
print(np_data,type(np_data))
[0 1 2 3 4 5] <class 'numpy.ndarray'>
[[0 1 2]
[3 4 5]] <class 'numpy.ndarray'>
这个时候可以看到,数组变为二维的了,两行三列
把二维数组转化为tensor
import torch
import numpy as np
np_data = np.arange(6).reshape((2,3))
torch_data = torch.from_numpy(np_data)
print(
'\nnumpy:', np_data,
'\ntorch:', torch_data,
)
numpy: [[0 1 2]
[3 4 5]]
torch: tensor([[0, 1, 2],
[3, 4, 5]])
把tensor转为数组
import torch
import numpy as np
np_data = np.arange(6).reshape((2,3))
torch_data = torch.from_numpy(np_data)
tensor2array = torch_data.numpy()
print(
'\nnumpy:', np_data,
'\ntorch:', torch_data,
'\ntensor2array', tensor2array,
)
numpy: [[0 1 2]
[3 4 5]]
torch: tensor([[0, 1, 2],
[3, 4, 5]])
tensor2array [[0 1 2]
[3 4 5]]
随机创建一个二维tensor
import torch
torch_data = torch.randn(2,3)
print(
'\ntorch_data:',torch_data
)
torch_data: tensor([[ 0.1533, -0.1010, 1.8385],
[-1.0455, 0.3707, 0.0191]])
构造初始化为0,1的tensor
import torch
torch_data_0 = torch.zeros(2,3)
torch_data_1 = torch.ones(2,3)
print(
'\ntorch_data_0:',torch_data_0,
'\ntorch_data_1:',torch_data_1,
)
torch_data_0: tensor([[0., 0., 0.],
[0., 0., 0.]])
torch_data_1: tensor([[1., 1., 1.],
[1., 1., 1.]])
从python列表直接构造tensor
import torch
torch_data_from_list = torch.Tensor([[1,2,3],[4,5,6]])
print(
'\ntorch_data_from_list:',torch_data_from_list,
)
torch_data_from_list: tensor([[1., 2., 3.],
[4., 5., 6.]])
需要注意的是,在pytorch中,默认的数据类型就是torch.FloatTensor,所以在这里torch.FloatTensor就等于torch.Tensor
import torch
torch_data_from_list = torch.Tensor([[1,2,3],[4,5,6]])
torch_data_from_list_32 = torch.FloatTensor([[1,2,3],[4,5,6]])
print(
'\ntorch_data_from_list:',torch_data_from_list,
'\ntorch_data_from_list_32',torch_data_from_list_32
)
torch_data_from_list: tensor([[1., 2., 3.],
[4., 5., 6.]])
torch_data_from_list_32 tensor([[1., 2., 3.],
[4., 5., 6.]])