Pytorch(7)-自己设计神经网络会遇到的问题
操作pytorch架构遇到的问题
- 1.网络参数初始化
- 2.查看当前可学习参数
- 3.增加可学习的参数
- 4.参数优化函数Adagrad
- 5.直接修改网络梯度值
- 6.optimizers.zero_grad()报错
- 7.tensor.detach() 和 tensor.data 的区别
1.网络参数初始化
在pytorch中,有自己默认初始化参数方式,所以定义好网络以后,没有特殊需求,不需要显式进行初始化操作。也可调用内置特定初始化函数,详见:https://blog.csdn.net/VictoriaW/article/details/72872036
也可以自定义初始化方式,详见:https://blog.csdn.net/qq_36338754/article/details/97756378
类神经网络层 Vs 函数神经网络层:https://blog.csdn.net/victoriaw/article/details/72869680
2.查看当前可学习参数
函数查看现在的全部可训练参数,定义网络net之后查看.state_dict()属性
net.state_dict()
或者
net.named_parameters()
3.增加可学习的参数
在网络初始化函数中添加nn.Parameter类型变量,即可以实现:增加额外的可学习参数的操作。
self.coefficient = torch.nn.Parameter(torch.Tensor([1.55]))
参考资料:https://blog.csdn.net/qq_19672579/article/details/79195568
4.参数优化函数Adagrad
Adagrad是解决不同参数应该使用不同的更新速率的问题。Adagrad自适应地为各个参数分配不同学习率的算法。更新公式:
wt+1=wt+ηgt∑i=0tgiw^{t+1}=w^t+\eta \frac{g^t}{\sqrt{\sum_{i=0}^tg^i}}wt+1=wt+η∑i=0tgigt
随着更新次数增加,更新越来越慢。
参考资料:https://www.jianshu.com/p/a8637d1bb3fc
5.直接修改网络梯度值
A.grad=num
num 为tensor 类型
6.optimizers.zero_grad()报错
Traceback (most recent call last):
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1758, in
main()
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1752, in main
globals = debugger.run(setup[‘file’], None, None, is_module)
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1147, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/_pydev_imps/pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, ‘exec’), glob, loc)
File “/home/pp/PycharmProjects/Stein-Variational-Gradient-Descent-master/python/cyy_bayesian_nn_1.py”, line 296, in
svgd = svgd_bayesnn(X_train, y_train, batch_size=batch_size, n_hidden=n_hidden, max_iter=max_iter)
File “/home/pp/PycharmProjects/Stein-Variational-Gradient-Descent-master/python/cyy_bayesian_nn_1.py”, line 127, in init
optimizer.zero_grad()
File “/home/pp/anaconda3/envs/py36_torch/lib/python3.6/site-packages/torch/optim/optimizer.py”, line 163, in zero_grad
p.grad.detach()
RuntimeError: Can’t detach views in-place. Use detach() instead
解决尝试:变换optimizer.zero_grad()的位置,没用,手动置0 吧.
A.grad.zero_()
参考资料:https://blog.csdn.net/a19990412/article/details/85247465
7.tensor.detach() 和 tensor.data 的区别
x .data 返回和 x 的相同数据 tensor, 但不会加入到x的计算历史里,且require s_grad = False, 这样有些时候是不安全的, 因为 x.data 不能被 autograd 追踪求微分 。
x.detach() 返回相同数据的 tensor ,且 requires_grad=False ,但能通过 in-place 操作报告给 autograd 在进行反向传播的时候。
参考资料:https://blog.csdn.net/DreamHome_S/article/details/85259533
Pytorch(7)-自己设计神经网络会遇到的问题相关推荐
- 【Pytorch】基于卷积神经网络实现的面部表情识别
作者:何翔 学院:计算机学院 学号:04191315 班级:软件1903 转载请标注本文链接: https://blog.csdn.net/HXBest/article/details/1219812 ...
- PyTorch实现基于卷积神经网络的面部表情识别
基于卷积神经网络的面部表情识别(Pytorch实现)----台大李宏毅机器学习作业3(HW3) 一.项目说明 给定数据集train.csv,要求使用卷积神经网络CNN,根据每个样本的面部图片判断出其表 ...
- 基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络
基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络 所用工具 文件结构: 数据: 代码: 结果: 改进思路 拓展 本文是一个基于pytorch使用CNN在生物信息学上进行位 ...
- 我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!
大家好,我是红色石头! 在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch ...
- 我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
大家好,我是红色石头! 在上两篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 详细介绍了卷积神经网络 ...
- 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!
在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch 复现了 LeNet-5 ...
- 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
今天我们将使用 Pytorch 来继续实现 LeNet-5 模型,并用它来解决 CIFAR10 数据集的识别. 正文开始! 二.使用LeNet-5网络结构创建CIFAR-10识别分类器 LeNet-5 ...
- 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!
今天我们将使用 Pytorch 来实现 LeNet-5 模型,并用它来解决 MNIST数据集的识别. 正文开始! 一.使用 LeNet-5 网络结构创建 MNIST 手写数字识别分类器 MNIST是一 ...
- 【深度学习】翻译:60分钟入门PyTorch(三)——神经网络
前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...
最新文章
- centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
- python怎么安装pandas模块-如何优雅的安装Python的pandas?
- IO和属性配置文件之组合拳
- 【LeetCode】0136. 只出现一次的数字
- 定期清空Linux系统日志文件
- 打开DataGrip显示Load Data Ctrl+F5解决方案
- 参数化测试 junit_JUnit 5 –参数化测试
- Java 算法 等差数列
- Java发送form-data请求实现文件上传
- windows 10
- 九针串口定义(公口、母口图解)
- SEO和SEM的区别与联系(完整篇)
- 联想Y720安装双系统详解win10+ubuntu14.04+gtx1060显卡驱动
- NetCore EF 使用scaffold-dbcontext导致deps.json] does not exist的解决办法
- Android Studio Gradle打包实践之多渠道+版本号管理
- 山寨美图秀秀的美肤功能----实现过程
- 发版名词介绍(alpha,beta,RC,Release)
- 游戏背景音乐怎样达到阴阳平衡?
- flutterdio_强大的Flutter http请求库dio
- 毫秒级返回数据,TDengine 在大疆车载智能驾驶云端平台上的应用
热门文章
- 基于SIP协议的视频通讯
- location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
- Java中快速处理集合_简洁又快速地处理集合——Java8 Stream(上)
- 【转】[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx
- 【转】Ubuntu下使用sysv-rc-conf管理服务
- Jenkins Ci系列目录
- iis到w3wp的数据流及工作原理
- 一步步编写操作系统 20 x86虚拟bochs一般用法 上
- 正则表达式:获取一串字符串中,某个字符串到某个字符串之间的字符串,不包含左右,只取中间