新建一个神经网络,方式一,基于 torch.nn.Sequential

发布时间: 2023-01-05 15:56:00 作者: 大象笔记

构建神经网络的两种方式

PyTorch 有两种构建神经网络的方式:

由于涉及的新概念非常多,所以拆分成两个笔记。这里就先了解一下第一种方式。

torch.nn.Sequential

https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html

CLASS torch.nn.Sequential(*args: Module)
CLASS torch.nn.Sequential(arg: OrderedDict[str, Module])

Sequential 的 forward 函数会自动将初始化参数中的 Module (模块)串联起来执行。 前一个 Module 的输出作为下一个 Module 的输入。

def forward(self, input):
	for module in self:
		input = module(input)
	return input

定义方式一

直接通过初始化参数

import torch
import torch. nn as nn
myNeuralNetwork = nn.Sequential(
	nn.Linear(3, 2),
	nn.ReLU(),
	nn.Linear(2, 1),
	nn.Sigmoid())

定义方式二

通过 add_module 添加模块

container = nn.Sequential()
begin_convol_layer = nn.Conv2d(input_channels=2, output_channels=12, kernel_size=2, stride=1, padding=1)
container.add_module("Conv1", begin_convol_layer)
relu1 = nn.ReLU(inplace=False)
container.add_module("Relu1", relu1)

nn.Linear 操作 (operation)

最常见的操作是 nn.Linear()

class torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)

https://pytorch.org/docs/stable/generated/torch.nn.Linear.html

Applies a linear transformation to the incoming data

即,对输入数据进行线性变换。

例如,上图中的神经网络中的第一步:

第二步:

Module 与 Model 的区别

ReLU

全称是 Rectified Linear Unit。

PyTorch 内置了 ReLU:

nn.ReLU()
我是一名山东烟台的开发者,联系作者