系列文章目录
PyTorch深度学习——Anaconda和PyTorch安装
Pytorch深度学习-----数据模块Dataset类
Pytorch深度学习------TensorBoard的使用
Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Compose,RandomCrop)
Pytorch深度学习------torchvision中dataset数据集的使用(CIFAR10)
Pytorch深度学习-----DataLoader的用法
文章目录
- 系列文章目录
- 一、nn.Module是什么?
- 二、搭建自己的一个神经网络
一、nn.Module是什么?
首先nn是Neural Netword(神经网络)首字母的缩写。
其次torch.nn是专门为神经网络设计的模块化接口,可以用来定义和运行神经网络。
nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法。
类别如下图所示
Module:位于containers容器中
官网案例如下图所示:
代码解释如下:
import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module): # 表示nn.Module为其Model的父类,Model继承于它
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))
小土堆对forward函数的解释如下图所示
即:对输入的x进行第一次卷积,再进行第一次非线性操作;
再第二次进行卷积,然后第二次非线性操作。
最后返回结果。
二、搭建自己的一个神经网络
import torch
import torch.nn as nn
# 创建类
class Lgl(nn.Module): # 表示nn.Module为其Lgl的父类,Lgl继承于它
def __init__(self): # 构造函数,进行初始化
super().__init__() # 调用父类的构造函数
def forward(self, x): # 前向传播函数
y = x+1 # 定义这个神经网络是输入x,返回x+1的结果
return y
# 实例化
test = Lgl()
x=torch.tensor(1.0) # <class 'torch.Tensor'>创建tensor类型数据作为卷积的参数
print(type(x))
result = test(x)
print(result) # tensor(2.)