网站建设完工报告,查楼盘剩余房源的网站,学院网站建设用户需求分析报告,晋城市住房保障和城乡建设局网站目录 一、网络框架介绍
二、导包
三、定义卷积神经网络
3.1 代码展示
3.2 定义网络的目的
3.3 Pytorch搭建网络
四、测试网络效果 一、网络框架介绍 网络理解#xff1a; 将32*32大小的灰度图片#xff08;下述的代码中输入为32*32大小的RGB彩色图片#xff09;…目录 一、网络框架介绍
二、导包
三、定义卷积神经网络
3.1 代码展示
3.2 定义网络的目的
3.3 Pytorch搭建网络
四、测试网络效果 一、网络框架介绍 网络理解 将32*32大小的灰度图片下述的代码中输入为32*32大小的RGB彩色图片输入到网络中经过第一次卷积C1变成了6通道、28*28大小的一个特征向量通过一次下采样S2变成了6通道、14*14大小的一个特征向量其宽高相当于折损了一般经过第二次卷积C3变成了16通道、10*10大小的一个特征向量通过第二次下采样S4变成了16通道、5*5大小的一个特征向量最后三层全连接输出。 ①Convolutious卷积涉及到输入、输出与很多参数的设置需要初始化。 ②Subsampling下采样该网络中使用的是最大池化下采样的方法最大池化下采样的和维2*2大小。 最大池化Max Pooling取窗口内的最大值作为输出。 ③Full Connection全连接需要初始化。
二、导包
import torch # torch基础库
import torch.nn as nn # torch神经网络库
import torch.nn.functional as F
三、定义卷积神经网络
3.1 代码展示
class Net(nn.Module):# 初始化def __init__(self):super(Net,self).__init__()self.conv1 nn.Conv2d(3,6,5)self.conv2 nn.Conv2d(6,16,5)self.fc1 nn.Linear(16*5*5,120)self.fc2 nn.Linear(120,84)self.fc3 nn.Linear(84,10)# 前向传播def forward(self,x):x self.conv1(x)x F.relu(x)x F.max_pool2d(x,(2,2))x F.max_pool2d(F.relu(self.conv2(x)),2)x x.view(-1,x.size()[1:].numel())x F.relu(self.fc1(x)) # 进入全连接层需要进行激活函数x F.relu(self.fc2(x))x self.fc3(x) # 最后一层为输出层要输出结果不需要进行激活return x
3.2 定义网络的目的 希望网络有科学系参数通过输入数据的训练让相关参数不断更新、梯度下降到一个合适的值之后输入新的图片可以进行分类或者预测。
3.3 Pytorch搭建网络 Pytorch搭建网络通常会采用类进行管理可取名为Net该名字可以更换通常需要继承nn.Model类相当于在Net中将Model定义好的方法直接进行使用。搭建网络通常包括两个函数 ①初始化函数含有默认参数实例化这个类的时候会自动执行的一部分这里面放网络需要初始化的内容。 def __init__(self) A. super(Net,self).__init__()在该函数中通常需要进行多继承操作相当于把Model类里面继承的类以及全部的类的方法都继承下来供Net去使用 B. nn.Conv2d(3,6,5)2d卷积核的函数只涉及三个参数其余参数使用默认值第一个参数为输入的通道数第二个参数为输出特征向量的通道数第三个参数为卷积核大小(使用output公式进行计算 W-F128W32,F5 ) 其中W是指宽高F是指所求的ColorSize的大小P是指Padding—像图片外面补边让它去遍历默认为0S是指步长卷积核遍历图片的步长默认为1 C. nn.Linear(16*5*5,120)全连接层的初始化涉及两个参数输入特征的维数大小和输出特征的维数大小全连接层需要对特征做一个拉平将每一个特征拉平将上一个特征向量拉为一条直线送给全连接层 ②前向传播函数需实现前向回归逻辑相当于完成整个网络运行的逻辑x是指输入相当于上图中的input。 def forward(self,x) A. F.relu(x)relu激活函数激活之后网络具有非线性的分离能力 B. tensor[batch,channel,H,W] channel是指通道数例如RBG三通道这些概念、H是指高W是指宽batch是指有几批这样的数据 C. F.max_pool2d(x,(2,2))最大池化下采样对x进行处理 D. x.view(-1,x.size()[1:].numel())进行拉平、展平之后给全连接层对当前的输入数据x进行一个形式转换输入行和列这里所对应的列等于self.fc1 nn.Linear(16*5*5,120)这里所对应的行为x.size切片之后数据的乘积行信息根据批次信息自动生成-1让程序自动生成这个行为什么要切1对于tensor信息来说将batch切掉channel、H、W相乘等于16*5*5 注意 Pytorch处理的都是张量张量是神经网络所使用的主要数据结构数据。
四、测试网络效果 相当于打印网络初始化部分也可以与网络结构相对应检查一下。
net Net()
print(net) 参考Pytorch逐行代码入门学习_哔哩哔哩_bilibili