前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用pytorch打印出隐藏层梯度

如何用pytorch打印出隐藏层梯度

原创
作者头像
我爱自然语言处理
发布于 2018-05-31 15:07:39
发布于 2018-05-31 15:07:39
12K00
代码可运行
举报
文章被收录于专栏:我的python我的python
运行总次数:0
代码可运行

我们在训练神经网络时, 有时会发现自己的网络学习不到东西,loss不下降或者下降很慢,这时除了检查修改学习率以外还有可能是碰见了梯度消失的问题。检查是否发生梯度消失最好的方法其实就是将梯度值打印出来,这里就讲讲如何在pytorch中打印出隐藏层的参数。

利用pytorch中register_hook函数可以打印出梯度,下面官方文档对这个函数的例子:

代码语言:python
代码运行次数:0
运行
复制
>>> v = Variable(torch.Tensor([0, 0, 0]), requires_grad=True)
>>> h = v.register_hook(lambda grad: grad * 2)  # double the gradient
>>> v.backward(torch.Tensor([1, 1, 1]))
>>> v.grad.data

在这个例子中,v是输入,这里计算的是v的梯度。如果要打印出隐藏层的梯度,则v应该是隐藏层的参数。那么接下来就是要选择出需要打印梯度的那一层的参数。

代码语言:python
代码运行次数:0
运行
复制
for item in net.named_parameters():
    if item[0] == 'fc.2.fc.weight':
        h = item[1].register_hook(lambda grad: print(grad))

net是之前建立的网络。net.named_parameters()方法返回的是一个tuple, 即(name_str, parameters)。通过name_str来选择打印哪一层的参数,再对parameters调用register_hook方法即可打印出该层参数。在这里我打印的是第二个全连接层的参数的梯度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
想进大厂,就关注「 程序亦非猿 」 时不时 8:38 推送优质文章,觉得有用,置顶加星标
程序亦非猿
2019/08/21
1.8K0
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
行为变更 | 了解 Android 12 中的 intent-filter
Android 12 一个重要的变更是提高应用和系统的安全性,这个变更影响了所有目标版本为 Android 12 的应用。
Android 开发者
2022/03/09
1.9K0
安装错误 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
安装时提示错误:Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
全栈程序员站长
2022/11/15
3.2K0
安装错误 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
Android签名校验机制(数字证书)
之前有多个游戏遇到关于签名错误的问题,加上有些游戏开发不熟悉Android签名校验的机制以及打包的方法,就专门总结了一下,现在整理一下。 首先放上官方文档链接:http://developer.android.com/tools/publishing/app-signing.html 什么是签名 就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是个加密的过程,数字签名验证是个解密的过程。 为什么有签名 最简单直接的回答: 系统要
子勰
2018/05/22
6.9K0
玩转ADB命令(ADB命令使用大全)
我相信做Android开发的朋友都用过ADB命令,但是也只是限于安装应用push文件和设备重启相关,更深的就不知道了,其实我们完全可以了解多一点,有一些不常用的场景我们至少应该知道它可以做到,比如,我们知道adb install 却不知道adb shell am start。前者是用来安装软件,后者用来打开软件,后者的一个使用场景让我对他重视:公司定制Android系统,在调试屏幕的时候要看是否满屏验证驱动是否正常,比较麻烦的做法是要拿到Android开发者手里用eclipse或者其他ide安装打开。显然相对于驱动人员连上数据线使用adb命令要复杂得多。因此,了解多一点还是很有必要的。
全栈程序员站长
2022/08/27
9.8K0
玩转ADB命令(ADB命令使用大全)
Android逆向分析(2) APK的打包与安装背后的故事
前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之
xiangzhihong
2018/02/01
3.1K0
Android逆向分析(2) APK的打包与安装背后的故事
android如何多渠道打包?
关于如何多渠道打包,以下文字详细解答了Android如何实现多渠道打包以及快速打包。
分你一些日落
2021/11/25
1.5K0
安卓安装包签名_笔记签名验证
我们知道,一款Android 要发布的话,必须经过签名,Android目前支持的签名方式包括三种:
全栈程序员站长
2022/11/17
1.4K0
安卓安装包签名_笔记签名验证
移动端App安全扫描平台-MobSF
MobSF(Mobile-Security-Framework)是一种开源自动化的移动应用程序(Android / iOS / Windows)安全测试框架,能够执行静态,动态和恶意软件分析。
清风穆云
2021/08/09
8K1
APK安装流程详解11——普通应用安装简介
众所周知,Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的。其中APK是Android Package的缩写。
隔壁老李头
2018/08/30
8.8K0
APK安装流程详解11——普通应用安装简介
APK安装流程详解10——PackageParser解析APK(下)
其中第一个parseBaseApk(File, AssetManager, int)方法,已经讲解过了,请参考APK安装流程详解9——PackageParser解析APK(上)中 五、PackageParse#parseMonolithicPackage(File, int)方法解析
隔壁老李头
2018/08/30
5K0
APK安装流程详解10——PackageParser解析APK(下)
APK安装流程详解14——PMS中的新安装流程上(拷贝)补充
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null) 要看这个方法内部执行,首先要知道这个mContext是什么,我们知道这个mContext是通过PackageManagerService的main方法传入的,所以这个mContext就是SystemServer里面的mSystemContext。 代码在SystemServer.java 366行如下:
隔壁老李头
2018/08/30
3.1K0
APK安装流程详解14——PMS中的新安装流程上(拷贝)补充
Android逆向分析大全
Android程序的特点相比在于使用混淆方式打包,将包名、类名、函数名改成不易看懂的字母,从而使生成的apk小很多(android studio提供了release编译方式,使用proguard混淆),因此反编译apk最多的工作在于重构这些名称,这一点和pc上一致,对于android native程序(jni)则和pc上基本一致,不同之处在于常见的是arm汇编。
bosh123
2020/12/22
3.7K0
安卓root权限管理_root权限在哪里设置
Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制, Android系统权限相关的内容,
全栈程序员站长
2022/11/17
14.1K0
Android 渗透测试学习手册 第三章 Android 应用的逆向和审计
在本章中,我们将查看 Android 应用程序或.apk文件,并了解其不同的组件。 我们还将使用工具(如 Apktool,dex2jar 和 jd-gui)来逆向应用程序。 我们将进一步学习如何通过逆向和分析源代码来寻找 Android 应用程序中的各种漏洞。 我们还将使用一些静态分析工具和脚本来查找漏洞并利用它们。
ApacheCN_飞龙
2022/12/01
1.2K0
APK安装流程详解8——PackageManagerService的启动流程(下)
那我们就来看下scanPackageLI(PackageParser.Package, int, int, long, UserHandle)方法
隔壁老李头
2018/08/30
2.7K0
Android Automotive Framework调试技巧
三次握手只是一个数据传输的过程,但是,我们传输前需要一些准备工作,比如将创建一个套接字,收集一些计算机的资源,将一些资源绑定套接字里面,以及接受和发送数据的函数等等,这些功能接口在一起构成了socket的编程
wizzie
2022/12/22
5.4K0
Android Automotive Framework调试技巧
系统应用集成过程中的一些坑背景知识点正文埋坑后记参考资料
埋这些坑的最初来源是由于测试人员在集成新终端设备时提了个 bug: app 在这个设备上无法启动。
请叫我大苏
2018/11/29
1.1K0
系统应用集成过程中的一些坑背景知识点正文埋坑后记参考资料
APK安装流程详解7——PackageManagerService的启动流程(上)
我们看到在SystemServer无参构造函数里面就是初始化mFactoryTestMode
隔壁老李头
2018/08/30
2.4K0
APK安装流程详解7——PackageManagerService的启动流程(上)
android adb shell 常用命令
mac: /Users/xx/Library/Android/sdk/tools/bin archquery jobb monkeyrunner sdkmanager avdmanager lint screenshot2 uiautomatorviewer
tea9
2022/09/08
3.5K0
推荐阅读
相关推荐
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档