![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
文章平均质量分 56
FaFa_Not_Flower
这个作者很懒,什么都没留下…
展开
-
.zero_grad()的重要性
根据pytorch中的backward()函数的计算,当网络参量进行反馈时,梯度是被积累的而不是被替换掉;但是在每一个batch时毫无疑问并不需要将两个batch的梯度混合起来累积,因此这里就需要每个batch设置一遍zero_grad。如果不是每一个batch就清除掉原有的梯度,而是比如说两个batch再清除掉梯度,这是一种变相提高batch_size的方法,对于计算机硬件不行,但是batch_size可能需要设高的领域比较适合,比如目标检测模型的训练。不写.zero_grad()的代码结果。原创 2022-10-17 12:57:02 · 1124 阅读 · 1 评论 -
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
pytorch是动态图机制,在训练模型时候,每迭代一次都会构建一个新的计算图(计算图是代表程序中变量之间的关系),为了节约内存,所以每次一轮迭代完也即是进行了一次backward函数计算之后计算图就被在内存释放,所以当计算第二次backward()时,计算图的结构已经被破坏,因此如果需要多次backward时只需要在第一次反向传播时候添加一个。新的a和原来的a已经完全不一样,对新的a进行backward,自动计算所有的梯度, 这个张量的所有梯度将会自动积累到。标识,让计算图不被立即释放。原创 2022-10-17 12:43:44 · 2901 阅读 · 1 评论