持续更新...
一些函数
- torch.ones() / torch.zeros,tensor全1或全0. 一般用于初始化
- torch.rand(*size, out=None) → 返回一个tensor,其中包含了从区间[0,1)的均匀分布中愁绪的一组随机数。
- torch.randn(*sizes, out=None) → 返回一个tensor,其中包含了从标准正态分布( μ \mu μ=0, σ \sigma σ=1,即高斯白噪声)中抽取的一组随机数。
- tensor.unsqueeze(dim=0) -> 1*10
Pytorch里Der乘法
torch.mm(x, y) - 矩阵相乘,叉乘,也可写为x.mm(y) # x, y均为tensor
矩阵大小应满足 x (i * n) × y (n * j)
torch.bmm(x, y) - 矩阵批处理乘法
torch.matmul(x, y) - 可以进行张量乘法,输入可以为高维的张量。当输入是二维时,结果和torch.mm相同
torch.bmm()
是两个三维张量相乘, 两个输入tensor维度是(
b
×
n
×
m
b × n × m
b×n×m)和(
b
×
m
×
p
b × m × p
b×m×p) 第一维b代表batch size,输出为(
b
×
n
×
p
b × n × p
b×n×p)
点乘
对应点相乘,点乘不求和操作,又可称为Hadamard product。
x*x
也可写为 x.dot(x)
,x.mul(y)
叉乘
矩阵乘法,可用torch.mm()
/ torch.matmul()
总结:
mul
表示为两个数组对应位置相乘; mm
和matmul
表示两个数组进行矩阵乘法。
Tensor的使用
Tensor:简单地说,它只是Pytorch中的一个n维数组。与数组不同的是它支持一些额外的操作。
/为什么不用数组要用tensor?/
除了使用CPU,tensor可以加载至GPU上进行更快的计算。在设置属性.requires_grad = True
时,他们开始形成一个反向图,跟踪应用于他们的每个操作,使用所谓的动态计算图计算梯度。torch.Tensor
能够跟踪历史并和Variable有一样的表现。
另外,根据Pytorch的设计,梯度只能计算浮点类型的张量。 so, `dtype=float32`