• 张量属于可变对象

# torch.dot(x, y)

用于求向量点积,即相同位置乘积之和。其结果与 ** torch.sum (x * y) ** 相同。

import torch
x = torch.tensor([1,2,3])
y = torch.tensor([1,2,3])
print(torch.dot(x, y))
print(x * y)
print(torch.sum(x * y))
tensor(14)
tensor([1, 4, 9])
tensor(14)

# torch.mv(x, y)

求矩阵 x 和向量 y 的 ** 矩阵 - 向量积 **。

import torch
x = torch.tensor([1,2,3])
y = torch.arange(15).reshape(5,3)
print(y)
print(y * x)
print(torch.mv(y, x))
tensor([[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11],
        [12, 13, 14]])
tensor([[ 0,  2,  6],
        [ 3,  8, 15],
        [ 6, 14, 24],
        [ 9, 20, 33],
        [12, 26, 42]])
tensor([ 8, 26, 44, 62, 80])

# 自动求导(自动微分机制)

import torch
x = torch.arange(4.0, requires_grad=True)
print(x)
print(x.grad)  # 默认为 None
y = 2 * torch.dot(x, x)
y.backward()
print(x.grad)
tensor([0., 1., 2., 3.], requires_grad=True)
None
tensor([ 0.,  4.,  8., 12.])

其中 ** x = torch.arange (4.0, requires_grad=True) ** 可以用示例代替:

x = torch.arange(4.0)
x.requires_grad_(True)

当你需要计算其他函数时:

# pytorch 默认会累积梯度,因此需要清除之前得到的值
x.grad.zero_()
y = x.sum()
y.backward()
print(x.grad)
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

ASXE 微信支付

微信支付

ASXE 支付宝

支付宝

ASXE 贝宝

贝宝