1、sigmod 的导数
s’ = s(1-s),取值是s ,0-1 (负无穷-正无穷),梯度离散
导数为0,时候梯度得不到更新,梯度离散
a=torch.linspace(-100,100,10)
torch.sigmod(a)
2、tanh,函数和导数 (-1,1)
torch.tanh(a)
from torch.nn import functional as F
F.relu(a)
a=torch.linspace(-1,1,10)##10个数据
torch.tanh(a) torch.sigmod(a)
3、relu, 梯度是1和0,没有梯度离散和爆炸
4 、loss
4.1 mse loss
细节实现,正则实现,差的平方和有根号
loss 差的平方和, 所以mse=torch.norm(y-pred,2).pow(2) # L2正则再平方一下
4.2 梯度
x=torch.ones(1)
w=torch.full([1],2)
mse=F.mse_loss(x*w ,torch.ones(1))# (predict,label)
torch.autograd.grad(mse,[w]) #(pred, [w1,w2,w3,…]),
w.requires.grad_() #下划线是 inplace操作表示需要更新w
mse=F.mse_loss(x*w ,torch.ones(1))# (predict,label),重新计算,更新图
torch.autograd.grad(mse,[w])
x=torch.ones(1)
w=torch.full([1],2)
mse=F.mse_loss(x*w ,torch.ones(1))# (predict,label)
mse.backward()
w.grad
返回列表[w1.grad,w2.grad…]
直接附加在 变量梯度后面
5 sigmod
每个值是0-1,概率值是1,
softmax 导数,
a=torch.rand(3)
p=F.softmax(a,dim=0)
p.backward(retain_graph=True)