导入pytorch
python
import torch
构造张量
python
x = torch.empty(5, 3) # 构造一个5x3矩阵,不初始化
y = torch.randn(5, 3) # 构造一个随机初始化的矩阵
z = torch.zeros(5, 3) # 构造一个矩阵全为 0
# 构造一个张量,直接使用数据
a = torch.tensor([1.2, 2, 3]) # 单行
b = torch.tensor([[1.2, 2, 3], [2, 3, 4]]) # 多行
# 创建一个 tensor 基于已经存在的 tensor
b = b.new_ones(3, 4, dtype=torch.double) # 重新指定了size
b = b.new_ones([3, 4], dtype=torch.double) # 和上面一样效果
a = torch.rand_like(b, dtype=torch.float) # size依赖输入的形参b
获取张量的维度信息
python
print(a.size()) # torch.Size([3, 4])
加法
python
print(z + y) # 加法
result = torch.empty(5, 3)
print(torch.add(z, y, out=result)) # 同样是加法,和上面加法效果一样,提供一个输出tensor作为参数,如果它的size和z+y不同,会提示错误
w = y.add_(z) # y已经发生改变
print(y)
print(w)
索引操作
python
print(y[:,0]) # 输出的是单行矩阵,数据是第一列的所有数字
print(y[1,2]) # 输出的是第二行,第三列的数字
print(y[1,:]) # 输出的是单行矩阵,数据是第二行的所有数值
改变tensor的大小或者形状
python
u = w.view(15) # 改变成单行矩阵,必须是原来的矩阵的行数列数乘积
s = w.view(-1,5) # 改变成5列矩阵,-1表示自动计算行数
print(u.size(),s.size()) # torch.Size([15]) torch.Size([3, 5])