热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PyTorch学习笔记之神经网络包nn和优化器optim

PyTorch学习笔记之神经网络包 nn 和优化器 optim


torch.nn 是专门为神经网络设计的模块化接口。构建于 Autograd 之上,可用来定义和运行神经网络。下面介绍几个常用的类:

注: torch.nn 为了方便使用,将它设置成 nn 的别名。

除了 nn 别名以外,我们还引用了 nn.functional,这个包中包含了神经网络中使用的一些常用的函数,这些函数的特点是,不具有可学习的参数(ReLu, pool, DropOut 等),这些函数可以放在构造函数中,也可以不放,但是这里建议不放。

一般情况下,我们将 nn.functional 设置为大写的 F, 这样缩写方便调用

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

  • 定义一个网络

PyTorch 中已经为我们准备好了现成的网络模型,只要继承 nn.module,并实现它的 forward 方法, PyTorch 会根据 autograd,自动实现 backward 函数,在 forward 函数中可使用任何 tensor 支持的函数,还可以使用 if、for 循环、print、 log 等 Python 语法,写法和标准的 Python 写法一致。

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

网络的可学习参数通过 net.parameters() 返回。

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

net.named_parameters 可以同时返回可学习的参数及名称。

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

forward 函数的输入和输出都是 Tensor。

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

在反向传播前,先要将所有参数的梯度清零。

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

注意 :torch. nn 只支持 mini-batches,不支持一次只输入一个样本,即一次必须是一个 batch。

也就是说,就算我们输入一个样本,也会对样本进行分批,所以,所有的输入都会增加一个维度,我们对比下刚才的nn中定义为3维,但是我们人工创建时多增加了一个维度,变为了4 维,最前面的 1 即为 batch-size。

 

  • 损失函数

在 nn 中 PyTorch 还预制了常用的损失函数,下面我们用 MSELOSS 用来计算均方误差

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

  • 优化器

在反向传播中计算完所有参数的梯度后,还需要使用优化方法来更新网络的权重和参数,例如随机梯度下降法(SGD)的更新策略如下:

 torch.optim中实现大多数的优化方法,例如:RMSProp、Adam、SGD 等,下面我们使用SGD 做个简单的样例:

PyTorch学习笔记之神经网络包 nn 和优化器 optim

 

 

 

 

 


推荐阅读
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 机器学习(ML)三之多层感知机
    深度学习主要关注多层模型,现在以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层多层感知机在单层神经网络的基础上引入了一到多个隐藏 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 本文将深入探讨生成对抗网络(GAN)在计算机视觉领域的应用。作为该领域的经典模型,GAN通过生成器和判别器的对抗训练,能够高效地生成高质量的图像。本文不仅回顾了GAN的基本原理,还将介绍一些最新的进展和技术优化方法,帮助读者全面掌握这一重要工具。 ... [详细]
  • 不用蘑菇,不拾金币,我通过强化学习成功通关29关马里奥,创造全新纪录
    《超级马里奥兄弟》由任天堂于1985年首次发布,是一款经典的横版过关游戏,至今已在多个平台上售出超过5亿套。该游戏不仅勾起了许多玩家的童年回忆,也成为强化学习领域的热门研究对象。近日,通过先进的强化学习技术,研究人员成功让AI通关了29关,创造了新的纪录。这一成就不仅展示了强化学习在游戏领域的潜力,也为未来的人工智能应用提供了宝贵的经验。 ... [详细]
  • 利用 PyTorch 实现 Python 中的高效矩阵运算 ... [详细]
  • python教程分享Pytorchmlu 实现添加逐层算子方法详解
    目录1、注册算子2、算子分发3、修改opmethods基类4、下发算子5、添加wrapper6、添加wrapper7、算子测试本教程分享了在寒武纪设备上pytorch-mlu中添加 ... [详细]
  • [TensorFlow系列3]:初学者是选择Tensorflow2.x还是1.x? 2.x与1.x的主要区别?
    作者主页(文火冰糖的硅基工坊):https:blog.csdn.netHiWangWenBing本文网址:https:blog.csdn.netHiW ... [详细]
  • pytorch(网络模型训练)
    上一篇目录标题网络模型训练小插曲训练模型数据训练GPU训练第一种方式方式二:查看GPU信息完整模型验证网络模型训练小插曲区别importtorchatorch ... [详细]
author-avatar
x修者x
無限者:www.wuxianzhe.cn
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有