神经网络的基本骨架-nn.Moudle的使用

文章


Module是Contains中最常用的模块,Contains是用来构建神经网络架构的。

Contains官方文档
神经网络的基本骨架-nn.Moudle的使用官方文档
根据官方文档的示例:

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

步骤:使用神经网络的基本骨架-nn.Moudle,主要可以分为三步吧。

  • 创建一个类继承nn.Module
  • 继承nn.Module的初始化加上自己的初始化
  • 重写forword方法

对官方文档这部分代码的解释:

def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

在这里插入图片描述
看图,很形象的。

nn.Moudle使用示例

import torch
from torch import nn

# 创建一个类继承nn.Module
class Tudui(nn.Module):
	# 继承nn.Module的初始化
    def __init__(self):
        super().__init__()
	# 重写forword方法
    def forward(self,input):
        output = input+1
        return output

# 创建一个类对象
obj = Tudui()
x = torch.tensor(1.0)
# 往类对象中传入参数并接收结果
output = obj(x)
# 输出结果
print(output)

代码运行结果:
运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`nn.Module` 是 PyTorch 中用于构建神经网络模型的基类。所有自定义的神经网络模型都应该继承自 `nn.Module` 类。`nn.Module` 类提供了很多有用的方法,使得神经网络模型的构建和训练变得更加简单。 `nn.Module` 类的常用方法: - `__init__(self)`: 初始化函数,用于定义模型的结构和参数; - `forward(self, input)`: 前向传播函数,用于定义模型的计算过程; - `parameters(self)`: 返回模型中所有需要训练的参数(权重和偏置); - `named_parameters(self)`: 返回模型中所有需要训练的参数及其名称; - `zero_grad(self)`: 将模型中所有参数的梯度设置为0; - `to(self, device)`: 将模型移动到指定的设备上(如:CPU或GPU); - `train(self, mode=True)`: 设置模型为训练模式,当模型中包含一些会改变的操作时(如:Dropout),需要调用该方法; - `eval(self)`: 设置模型为评估模式,当模型中包含一些不会改变的操作时(如:BatchNorm),需要调用该方法。 下面是一个简单的例子,展示了如何使用 `nn.Module` 类来构建一个神经网络模型: ```python import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = nn.functional.relu(nn.functional.max_pool2d(self.conv1(x), 2)) x = nn.functional.relu(nn.functional.max_pool2d(self.conv2(x), 2)) x = x.view(-1, 320) x = nn.functional.relu(self.fc1(x)) x = self.fc2(x) return nn.functional.log_softmax(x, dim=1) ``` 在这个例子中,我们定义了一个名为 `Net` 的模型,继承自 `nn.Module` 类。在 `__init__` 方法中,我们定义了模型的结构和参数,包括两个卷积层和两个全连接层。在 `forward` 方法中,我们定义了模型的计算过程,包括卷积、池化、全连接和激活操作。我们还可以通过调用其他 `nn.Module` 类中的方法,如 `nn.functional.relu` 和 `nn.functional.log_softmax` 等,来方便地构建模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布兹学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值