书P59开始
首先导入包
import numpy as np
import torch
torch.tensor([1, 2, 3, 4]) # 转换python列表为Pytorch张量
输出结果为
tensor([1, 2, 3, 4])
查看张量数据类型
torch.tensor([1, 2, 3, 4]).dtype # 查看张量数据类型
输出
torch.int64
torch.tensor([1, 2, 3, 4], dtype=torch.float32)
输出
tensor([1., 2., 3., 4.])
查看张量数据类型
torch.tensor([1, 2, 3, 4], dtype=torch.float32).dtype
输出
torch.float32
torch.tensor(range(10)) # 转换迭代器为张量
输出
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.array([1,2,3,4]).dtype # 查看numpy数组类型
输出
dtype('int32')
torch.tensor(np.array([1,2,3,4])) # 转换numpy数组为pytorch张量
输出
tensor([1, 2, 3, 4], dtype=torch.int32)
torch.tensor(np.array([1,2,3,4])).dtype # 转换后pytorch张量的类型
输出
torch.int32
torch.tensor([1.0, 2.0, 3.0, 4.0]).dtype
输出
torch.float32
torch.tensor(np.array([1.0, 2.0, 3.0, 4.0])).dtype
输出
torch.float64
torch.tensor([[1, 2, 3], [4, 5, 6]]) # 注意外面还有一对中括号!
输出
tensor([[1, 2, 3],
[4, 5, 6]])
torch.randn(3, 3).to(torch.int)
输出
tensor([[ 0, 0, -1],
[ 0, -1, 0],
[ 0, 0, 0]], dtype=torch.int32)
torch.randint(0, 5, (3, 3)).to(torch.float)
输出
tensor([[1., 0., 0.],
[0., 4., 0.],
[0., 2., 2.]])
如果预先有数据(包括列表和numpy数组),可以用这个方法进行转换,具体代码见第一节。
通过指定张量的形状,返回给定形状的张量。
torch.rand(3, 3) # 生成3×3的矩阵,服从[0,1)上的均匀分布
输出
tensor([[0.8495, 0.6578, 0.6414],
[0.4056, 0.3283, 0.8018],
[0.3692, 0.6454, 0.9068]])
torch.randn(2, 3, 4) # 生成2×3×4的张量,服从标准正态分布
输出
tensor([[[-1.4592, 0.8455, 0.2028, 1.4529],
[-0.6733, 0.1475, -0.6303, -1.0275],
[ 1.0311, -0.0114, 0.0187, 1.1736]],
[[-0.6119, 0.9253, -0.6474, -1.1126],
[-0.2808, 1.8824, -1.3947, 0.6264],
[-0.4868, -0.0196, 1.3352, 0.9196]]])
torch.zeros(2, 2, 2)
输出
tensor([[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]])
torch.ones(1, 2, 3)
输出
tensor([[[1., 1., 1.],
[1., 1., 1.]]])
torch.eye(3)
输出
tensor([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
torch.randint(0, 10, (3, 3))
输出
tensor([[8, 2, 1],
[9, 7, 5],
[5, 4, 4]])