使用pytorch快速搭建神经网络的两种方式

发布时间:2024-05-25 11:01

假设需要搭建一个3层神经网络:

输入层数为5,中间隐藏层的维度为10,输出层的维度为2,激活函数使用ReLU激活函数

第一种方法

使用nn.Sequential的方式定义,将网络以序列的方式进行组装,使用每个层前面的输出作为输入,内部会自动维护层与层之间的权重矩阵以及偏置向量,方式如下:

import torch

model = torch.nn.Sequential(
    torch.nn.Linear(5, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 2),
)
print(model)

out:
Sequential(
  (0): Linear(in_features=5, out_features=10, bias=True)
  (1): ReLU()
  (2): Linear(in_features=10, out_features=2, bias=True)
)

第二种方法

采用继承nn.Module,这需要我们自己实现__init__和 forward 前向传播,forward方法接收输入数据,经不同层函数处理,最后返回线性函数linear2的处理结果作为最终的预测输出值,具体如下:

import torch
class SimpleLayerNet(torch.nn.Module):
    def __init__(self, D_in, H, D_out):
        super(SimpleLayerNet,self).__init__()
        self.linear1 = torch.nn.Linear(D_in, H)
        self.relu = torch.nn.ReLU()
        self.linear2 = torch.nn.Linear(H , D_out)

    def forward(self,x):
        h_relu = self.relu(self.linear1(x))
        y_pred = self.Linear2(h_relu)
        return y_pred

model = SimpleLayerNet(5, 10, 2)
print(model)

out:
SimpleLayerNet(
  (linear1): Linear(in_features=5, out_features=10, bias=True)
  (relu): ReLU()
  (linear2): Linear(in_features=10, out_features=2, bias=True)

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号