当我们构建复杂网络模型或在模型中加入复杂操作时,可能会需要验证该模型或操作是否可导,即模型是否能够优化,在PyTorch框架下,我们可以使用torch.autograd.gradcheck函数来实现这一功能。

首先看一下官方文档中关于该函数的介绍:

可以看到官方文档中介绍了该函数基于何种方法,以及其参数列表,下面给出几个例子介绍其使用方法,注意:

  • Tensor需要是双精度浮点型且设置requires_grad = True

第一个例子:检查某一操作是否可导

from torch.autograd import gradcheck
import torch
import torch.nn as nninputs = torch.randn((10, 5), requires_grad=True, dtype=torch.double)
linear = nn.Linear(5, 3)
linear = linear.double()
test = gradcheck(lambda x: linear(x), inputs)
print("Are the gradients correct: ", test)

输出为:

Are the gradients correct:  True

第二个例子:检查某一网络模型是否可导 

from torch.autograd import gradcheck
import torch
import torch.nn as nn# 定义神经网络模型
class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.net = nn.Sequential(nn.Linear(15, 30),nn.ReLU(),nn.Linear(30, 15),nn.ReLU(),nn.Linear(15, 1),nn.Sigmoid())def forward(self, x):y = self.net(x)return ynet = Net()
net = net.double()
inputs = torch.randn((10, 15), requires_grad=True, dtype=torch.double)
test = gradcheck(net, inputs)
print("Are the gradients correct: ", test)

输出为:

Are the gradients correct:  True

PyTorch检查模型梯度是否可导相关推荐

  1. PyTorch的计算图和自动求导机制

    文章目录 PyTorch的计算图和自动求导机制 自动求导机制简介 自动求导机制实例 梯度函数的使用 计算图构建的启用和禁用 总结 PyTorch的计算图和自动求导机制 自动求导机制简介 PyTorch ...

  2. 更新fielddata为true_在pytorch中停止梯度流的若干办法,避免不必要模块的参数更新...

    在pytorch中停止梯度流的若干办法,避免不必要模块的参数更新 2020/4/11 FesianXu 前言 在现在的深度模型软件框架中,如TensorFlow和PyTorch等等,都是实现了自动求导 ...

  3. c++list遍历_小白学PyTorch | 6 模型的构建访问遍历存储(附代码)

    关注一下不迷路哦~喜欢的点个星标吧~<> 小白学PyTorch | 5 torchvision预训练模型与数据集全览 小白学PyTorch | 4 构建模型三要素与权重初始化 小白学PyT ...

  4. Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它

    Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它 本教程我们将描述如何将PyTorch中定义的模型转换为ONNX格式,然后使用ONNX运行时运行它. ONNX运行时是一个 ...

  5. Pytorch中的梯度知识总结

    文章目录 1.叶节点.中间节点.梯度计算 2.叶子张量 leaf tensor (叶子节点) (detach) 2.1 为什么需要叶子节点? 2.2 detach()将节点剥离成叶子节点 2.3 什么 ...

  6. Pytorch创建模型-小试牛刀

    Pytorch创建模型 写这篇博客的初衷是因为非常多情况下需要用到pytorch的包,但是每一次调用都需要额外编写函数,评估呀什么的,特别要牵扯上攻击和防御,所以就想写个博客,总结一下,彻底研究这个内 ...

  7. PyTorch定义新的自动求导(Autograd) 函数

    PyTorch定义新的自动求导(Autograd) 函数 pytorch官网提供了定义新的求导函数的方法(链接放在文章末尾了),官网举的例子,可能我比较笨,愣是反应了好一会儿才理解.这篇博客主要讲 P ...

  8. PyTorch:模型save和load

    -柚子皮- 神经网络训练后我们需要将模型进行保存,要用的时候将保存的模型进行加载. PyTorch 中保存模型主要分为两类:保存整个模型和只保存模型参数. A common PyTorch conve ...

  9. PyTorch中的梯度累积

    我们在训练神经网络的时候,超参数batch_size的大小会对模型最终效果产生很大的影响,通常的经验是,batch_size越小效果越差:batch_size越大模型越稳定.理想很丰满,现实很骨感,很 ...

最新文章

  1. 解决Sublime包管理package control 报错 There are no packages available for installation
  2. Python 字符串处理(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
  3. python控制步进电机代码tx2_步进电机C语言控制,高手请进来指点一下!
  4. Android 编译系统分析(三)
  5. P1537 弹珠 背包可行性dp
  6. Java http处理get请求,参数中带特殊字符处理方式
  7. 对私有API提交的注意事项
  8. webrtc研究资源摘录
  9. 《那些年啊,那些事——一个程序员的奋斗史》十一
  10. yolo算法python代码_python通过yolo算法识别图片中的对象
  11. 你见过花140年拼出来的现存“古代最高积木”吗?
  12. Is your Tecplot 360 EX liense valid?
  13. 2022江苏省职业院校技能大赛(中职)网络搭建与应用赛项
  14. padavan手动安装php
  15. 神秘美女接机刘谦 网友见证奇迹时刻:女子像舒淇
  16. ssm个人微空间图片相册共享系统
  17. Debian squeeze 美化字体
  18. 汽车的转向控制 外文翻译
  19. neon浮点运算_NEON简单介绍
  20. 成就你一生的100个哲理81-90

热门文章

  1. asyncio中的call_soon、call_later、call_at、call_soon_threadsafe方法
  2. linux背光系统--背光延时点亮
  3. 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解
  4. Centos7下Mysql 安装及简单配置
  5. PyCharm安装scrapy框架
  6. 在计算机中处理汉字信息,汉字信息在计算机中的处理.doc
  7. MFC函数书本速查 API函数大全
  8. Android基础入门视频培训教程-刘志远-专题视频课程
  9. 一克500元比黄金还贵的片仔癀,炒作退潮“中药茅”要“黄”了?
  10. nvme命令中prp_NVMe又有新花样!CMB vs HMB