学习视频:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili
visdom 深度学习可视化工具
随机梯度下降可以跨越鞍点
N个样本随机选一个计算loss,计算出梯度就开始更新权重
梯度下降可以并行计算,每个样本计算loss时W是一样的,随机梯度下降样本间的W是有依赖关系的,下一个样本的待更新的W是上个样本更新后的W,所以他不能并行计算。
梯度下降 随机梯度下降
因此采用一种这种的梯度下降方法:Batch (Mini-Batch)分批次
x需要做类型转换 为Tensor 参与运算的元素里有包含需要计算梯度的tensor,那么计算的结果默认也是需要计算梯度的。
前向计算loss,反向计算梯度l.backward,将计算图中所有需要计算梯度的地方都进行计算,然后保存在tensor W里。 反向传播完后计算图就释放。
求梯度是做一个纯数值运算。w.grad也是一个tensor ,用tensor进行计算是在定义计算图,所以要拿到他的值,要用w.grad.data,如果用tensor 计算实际上是在定义计算图,就意味着将来会自动对其求梯度。w.grad.item()也是为了防止张量运算。
这样写会导致sum由开始的标量变为tensor,训练不结束计算图一直在增长,会把内存吃光
w更新完需要做一下清零。否则会梯度累加,所以要手工清零