torch.all(torch.eq(c1, c2))
torch.matmul(c,d)
a.floor(), a.ceil(), a.trunc(), a.frac()) # 取下,取上,取整数,取小数
c.round()) # 四舍五入
# 实际使用时可以查看梯度的(L2范数)模来看看需不需要做处理:w.grad.norm(2)。
grad.clamp(10)) # 最小是10,小于10的都变成10
print(grad.clamp(3, 10)) # 最小是3,小于3的都变成3;最大是10,大于10的都变成10
# 求L1范数(所有元素绝对值求和)
print(a.norm(1)# 求L2范数(所有元素的平方和再开根号)
print(a.norm(2)# 在b的1号维度上求L1范数
print(b.norm(1, dim=1))
tensor.prod()
print(b.argmax(), b.argmin())
c.argmax(dim=1))
print(c.max(dim=1))
# 运行结果:(tensor([0.9589, 1.7394, 1.3448, 2.2079]), tensor([2, 2, 5, 7]))
print(c.argmax(dim=1, keepdim=True))
print(c.max(dim=1, keepdim=True))
d = torch.randn(2, 10) # 2个样本,分为10个类别的置信度
print(d.topk(3, dim=1)) # 最大的3个类别
print(d.topk(3, dim=1, largest=False)) # 最小的3个类别
print(d.kthvalue(8, dim=1)) # 求第8小(一共10个那就是第3大)
import torch
cond = torch.tensor([[0.6, 0.1], [0.2, 0.7]])
a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[4, 5], [6, 7]])
c = torch.where(cond > 0.5, a, b)
p = F.softmax(y, dim=0)
# 计算p1对y0,y1,y2的导数
print(torch.autograd.grad(p[1], [y], retain_graph=True))
# 计算p2对y0,y1,y2的导数
print(torch.autograd.grad(p[2], [y]))
res = torch.autograd.grad(mse, [w]) # 让MSE对参数w自动求导
# 注意在前面定义完w后将其设置为需要梯度信息,否则上一句会报错
w = torch.full([1], 2)
w.requires_grad_()
# 也可以在建立Tensor时用参数指明它需要梯度信息:
w = torch.full([1], 2, requires_grad=True)
mse.backward()
#注意,这个API会将之前的梯度信息覆盖掉,所以多次调用这个LOSS对象的.backward()方法时会报错,如果要再次调用以生成新的梯度信息,要给它一个参数:mse.backward(retain_graph=True)
# 这里有两组w,也就输出到了2个结点上
w = torch.randn(2, 10, requires_grad=True)
# 对输出用sigmoid激活
o = torch.sigmoid(x @ w.t())
# 当网络参量进行反馈时,梯度是被积累的而不是被替换掉,这里即每次将梯度设置为0:
optimizer.zero_grad()
# 生成当前所在点函数值相关的梯度信息,这里即优化目标的梯度信息
pred.backward()
# 使用梯度信息更新优化目标的值,即更新x[0]和x[1]
optimizer.step()
logits = forward(data)
test_loss += CEL(logits, target).item()
"""
得到的预测值输出是一个10个分量的概率,在第2个维度上取max
logits.data是一个shape=[batch_size,10]的Tensor
注意Tensor.max(dim=1)是在这个Tensor的1号维度上求最大值
得到一个含有两个元素的元组,这两个元素都是shape=[batch_size]的Tensor
第一个Tensor里面存的都是最大值的值,第二个Tensor里面存的是对应的索引
这里要取索引,所以取了这个tuple的第二个元素
print(type(logits.data), logits.data.shape,type(logits.data.max(dim=1)))
"""
pred = logits.data.max(dim=1)[1]
下一篇:【Linux】守护进程