pytorch对梯度进行可视化进行梯度检查教程

 更新时间:2020年02月04日 15:04:57   作者:陈军2号  
今天小编就为大家分享一篇pytorch对梯度进行可视化进行梯度检查教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

目的: 在训练神经网络的时候,有时候需要自己写操作,比如faster_rcnn中的roi_pooling,我们可以可视化前向传播的图像和反向传播的梯度图像,前向传播可以检查流程和计算的正确性,而反向传播则可以大概检查流程的正确性。

实验

可视化rroi_align的梯度

1.pytorch 0.4.1及之前,需要声明需要参数,这里将图片数据声明为variable

im_data = Variable(im_data, requires_grad=True)

2.进行前向传播,最后的loss映射为一个一维的张量

pooled_feat = roipool(im_data, rois.view(-1, 6))
res = pooled_feat.pow(2).sum()
res.backward()

3.注意求loss的时候采用更加复杂,或者更多的运算(这样在梯度可视化的时候效果才更加明显)

可视化效果

原始图片

梯度可视化图片

原图+梯度图

小结:

可以看到误差梯度的位置是正确的,误差是否正确,需要其他方式验证(暂时没有思路)

可以看到上面在求loss的时候为:loss = sum(x2),但是如果换成:loss = mean(x),效果就没有上面明显。

实验二的效果

loss = mean(x)

可以看到根本无法看到误差梯度的位置信息

实验三:loss = sum(x)

小结: 可以看到位置信息有差别,比如国徽部分,这会让人以为,国徽部分只利用了左部分的信息,或者自己手写的操作误差索引不对。

可以通过两种方式进行验证

1.用更多,更复杂的运算求loss,比如pow,等

2.用matplotlib显示图片后,用鼠标可以指示每个点的具体的值,可以检测有误差梯度区域是否和无误差梯度区域有差别。

以上这篇pytorch对梯度进行可视化进行梯度检查教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3中dict.keys().sort()用不了的解决方法

    python3中dict.keys().sort()用不了的解决方法

    本文主要介绍了python3中dict.keys().sort()用不了的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • anaconda如何创建和删除环境

    anaconda如何创建和删除环境

    这篇文章主要介绍了anaconda如何创建和删除环境,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解

    Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解

    virtualenvwrapper是用来管理virtualenv的扩展包,用着很方便。这篇文章主要介绍了Python开发虚拟环境使用virtualenvwrapper的搭建步骤 ,需要的朋友可以参考下
    2018-09-09
  • Python模拟实现高斯分布拟合

    Python模拟实现高斯分布拟合

    当我们绘制一个数据集(如直方图)时,图表的形状就是我们所说的分布,最常见的连续值形状是钟形曲线,也称为高斯分布或正态分布,下面我们就来利用Python模拟实现一下高斯分布吧
    2023-12-12
  • Tensorflow训练MNIST手写数字识别模型

    Tensorflow训练MNIST手写数字识别模型

    这篇文章主要为大家详细介绍了Tensorflow训练MNIST手写数字识别模型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Python如何使用input函数获取输入

    Python如何使用input函数获取输入

    这篇文章主要介绍了Python如何使用input函数获取输入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python实现的rsa加密算法详解

    Python实现的rsa加密算法详解

    这篇文章主要介绍了Python实现的rsa加密算法,结合完整实例形式分析了Python实现rsa加密算法的原理、步骤与相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Python+matplotlib实现量场图的绘制

    Python+matplotlib实现量场图的绘制

    matplotlib是基于Python语言的开源项目,pyplot提供一系列绘制2D图形的方法。本文将带大家学习matplotlib.pyplot.quiver()相关方法属性并通过其绘制量场图
    2021-12-12
  • python按比例随机切分数据的实现

    python按比例随机切分数据的实现

    这篇文章主要介绍了python按比例随机切分数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现subprocess执行外部命令

    Python实现subprocess执行外部命令

    Python使用最广泛的是标准库的subprocess模块,使用subprocess最简单的方式就是用它提供的便利函数,因此执行外部命令优先使用subprocess模块,下面就一起来了解一下如何使用
    2021-05-05

最新评论