操作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=0t​gi​gt​

随着更新次数增加,更新越来越慢。
参考资料: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)-自己设计神经网络会遇到的问题相关推荐

  1. 【Pytorch】基于卷积神经网络实现的面部表情识别

    作者:何翔 学院:计算机学院 学号:04191315 班级:软件1903 转载请标注本文链接: https://blog.csdn.net/HXBest/article/details/1219812 ...

  2. PyTorch实现基于卷积神经网络的面部表情识别

    基于卷积神经网络的面部表情识别(Pytorch实现)----台大李宏毅机器学习作业3(HW3) 一.项目说明 给定数据集train.csv,要求使用卷积神经网络CNN,根据每个样本的面部图片判断出其表 ...

  3. 基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络

    基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络 所用工具 文件结构: 数据: 代码: 结果: 改进思路 拓展 本文是一个基于pytorch使用CNN在生物信息学上进行位 ...

  4. 我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!

    大家好,我是红色石头! 在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch ...

  5. 我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!

    大家好,我是红色石头! 在上两篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 详细介绍了卷积神经网络 ...

  6. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!

    在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch 复现了 LeNet-5 ...

  7. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!

    今天我们将使用 Pytorch 来继续实现 LeNet-5 模型,并用它来解决 CIFAR10 数据集的识别. 正文开始! 二.使用LeNet-5网络结构创建CIFAR-10识别分类器 LeNet-5 ...

  8. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!

    今天我们将使用 Pytorch 来实现 LeNet-5 模型,并用它来解决 MNIST数据集的识别. 正文开始! 一.使用 LeNet-5 网络结构创建 MNIST 手写数字识别分类器 MNIST是一 ...

  9. 【深度学习】翻译:60分钟入门PyTorch(三)——神经网络

    前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...

最新文章

  1. centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
  2. python怎么安装pandas模块-如何优雅的安装Python的pandas?
  3. IO和属性配置文件之组合拳
  4. 【LeetCode】0136. 只出现一次的数字
  5. 定期清空Linux系统日志文件
  6. 打开DataGrip显示Load Data Ctrl+F5解决方案
  7. 参数化测试 junit_JUnit 5 –参数化测试
  8. Java 算法 等差数列
  9. Java发送form-data请求实现文件上传
  10. windows 10
  11. 九针串口定义(公口、母口图解)
  12. SEO和SEM的区别与联系(完整篇)
  13. 联想Y720安装双系统详解win10+ubuntu14.04+gtx1060显卡驱动
  14. NetCore EF 使用scaffold-dbcontext导致deps.json] does not exist的解决办法
  15. Android Studio Gradle打包实践之多渠道+版本号管理
  16. 山寨美图秀秀的美肤功能----实现过程
  17. 发版名词介绍(alpha,beta,RC,Release)
  18. 游戏背景音乐怎样达到阴阳平衡?
  19. flutterdio_强大的Flutter http请求库dio
  20. 毫秒级返回数据,TDengine 在大疆车载智能驾驶云端平台上的应用

热门文章

  1. 基于SIP协议的视频通讯
  2. location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
  3. java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
  4. Java中快速处理集合_简洁又快速地处理集合——Java8 Stream(上)
  5. 【转】[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx
  6. 【转】Ubuntu下使用sysv-rc-conf管理服务
  7. Jenkins Ci系列目录
  8. iis到w3wp的数据流及工作原理
  9. 一步步编写操作系统 20 x86虚拟bochs一般用法 上
  10. 正则表达式:获取一串字符串中,某个字符串到某个字符串之间的字符串,不包含左右,只取中间