Pytorch神经网络工具箱(1)

含义

包含层、模型、损失函数、优化器等神经网络核心组件,以及构建神经网络的主要工具(nn.Module和nn.functional),介绍了构建模型的不同方式,如继承nn.Module基类、使用nn.Sequential按层顺序构建、继承nn.Module类并使用模型容器构建、自定义网络模块等。

神经网络核心组件

- 层:神经网络的基本结构,将输入张量转换为输出张量。

- 模型:由层构成的网络。

- 损失函数:参数学习的目标函数,通过最小化损失函数来学习参数。

- 优化器:用于使损失函数最小。

构建神经网络的主要工具

 

- nn.Module:继承自Module类,可自动提取可学习的参数,适用于卷积层、全连接层、dropout层等。

- nn . Module ,写法一般为 nn . Xxx ,如 nn . Linear 、

 nn .Conv2d、 nn . CrossEntropyLoss 等。

- nn.functional:更像是纯函数,适用于激活函数、池化层等。

- nn . functional 中的函数,写法一般为 nn . funtional . xxx ,如 nn . funtional . linear 、 nn . funtional .conv2d、 nn . funtional . cross _ entropy 等。

两者的主要区别如下:

1、nn . Xxx 继承于 nn . Module , nn . Xxx 需要先实例化并传入参数,然后以函数调用的方式调用实例化的对象并传入输入数据。它能够很好的与 nn . Sequential 结合使用,而 nn . functional . xxx 无法与 nn . Sequential 结合使用。

2、nn . Xxx 不需要自己定义和管理 weight 、 bias 参数;而

nn . functional . xxx 需要你自己定义 weight 、 bias ,每次调用的时候都需要手动传入 weight 、 bias 等参数,不利于代码复用。

3、dropout 操作在训练和测试阶段是有区别的,使用 nn . Xxx 方式定义 dropout ,在调用 model . eval ()之后,自动实现状态的转换,而使用 nn . functional . xxx 却无此功能。

构建模型

- 继承nn.Module基类构建模型

- 使用nn.Sequential按层顺序构建模型的方法

- 使用相关模型容器(nn.Sequential,nn.ModuleList,ModuleDict等)进行封装。

使用nn.Sequential按层顺序构建模型

1、利用可变参数

该方法构建时不能给每个层指定名称,如果需要给每个层指定名称,可使用 add _ module 方法或 OrderedDict 方法。

2、使用 add module 方法

3、使用 OrderedDict 方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值