网站制作用什么语言,怎么做网站的页眉,公司网站开发毕业设计,做网站如何赚钱卷积神经网络
欢迎访问Blog全部目录#xff01; 文章目录 卷积神经网络1. 神经网络概览2.CNN#xff08;Convolutional Neunal Network#xff09;2.1.学习链接2.2.CNN结构2.2.1.基本结构2.2.1.1输入层2.2.1.2.卷积层|Convolution Layers2.2.1.3.池化层|Pooling layers2.3…卷积神经网络
欢迎访问Blog全部目录 文章目录 卷积神经网络1. 神经网络概览2.CNNConvolutional Neunal Network2.1.学习链接2.2.CNN结构2.2.1.基本结构2.2.1.1输入层2.2.1.2.卷积层|Convolution Layers2.2.1.3.池化层|Pooling layers2.3.1.4.全连接层|Linear Layers 2.2.2.核心要素 2.3.pytorch CNN2.3.1.区分conv1d与conv2d2.3.2.CNN搭建与参数2.3.3.示意图:star: 1. 神经网络概览
Leijnen, Stefan Veen, Fjodor. (2020). The Neural Network Zoo. Proceedings. 47. 9. 10.3390/proceedings47010009.
2.CNNConvolutional Neunal Network
CNN的核心为使用卷积核对图像矩阵进行卷积运算线性运算
2.1.学习链接
学习笔记深度学习3——卷积神经网络CNN理论篇_cnn理论-CSDN博客 【深度学习】一文搞懂卷积神经网络CNN的原理超详细_卷积神经网络原理-CSDN博客
2.2.CNN结构
2.2.1.基本结构 2.2.1.1输入层
图片在计算机中是包括 宽高深的三维矩阵元素为灰度值或RGB值其中矩阵的深即为RGB层次。如果为RGB图片图片深度为3。图片的三维矩阵即为CNN的输入。宽高矩阵为1个channel宽高矩阵为特征图。 输入层即接收原始图片数据CNN可以保留图片的连续像素物体的不变性加深神经网络对图片的理解。
2.2.1.2.卷积层|Convolution Layers
作用捕捉图片的局部特征而不受其位置的影响。
多个卷积核叠加即为卷积层。
卷积层后需接激活函数如ReLU来引入非线性。
2.2.1.3.池化层|Pooling layers
作用通过减小特征图的大小下采样来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。
有点类似于图像的模糊处理
2.3.1.4.全连接层|Linear Layers
全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。
2.2.2.核心要素
名称name含义过滤器卷积核过滤器为可移动的三维小窗口矩阵N*N*N【kernel_size】它是一组固定的权重。卷积操作即为将卷积核与图像进行逐元素相乘后相加。步长stride卷积核每次滑动位置的步长。卷积核的个数out_channels决定输出矩阵的深度depth。一个卷积核输出一个深度层。填充值zero-padding在外围边缘补充若干圈0方便从初始位置以步长为单位可以刚好滑倒末尾位置。数据填充的主要目的是确保卷积核能够覆盖输入图像的边缘区域同时保持输出特征图的大小输入特征图大小。如果想要维持特征图大小不变 p a d d i n g ( k e r n e l _ s i z e − 1 ) / 2 padding(kernel\_size-1)/2 padding(kernel_size−1)/2
以下图为例(图示为conv2d)
步长2卷积核个数2填充值1在图片周围补1圈0卷积核尺寸为3*3*3 2.3.pytorch CNN
APItorch.nn.convolution-layers — PyTorch 2.2 documentation
2.3.1.区分conv1d与conv2d
conv1dconv2d输入语音二维矩阵图像三维矩阵卷积核卷积核尺寸二维卷积核个数卷积核尺寸三维卷积核个数总结在特征图内只能竖着扫在特征图内先横着扫再竖着扫
图像的CNN使用的是conv2d
2.3.2.CNN搭建与参数
import torch
import torch.nn as nnclass Cnn(nn.Module):def __init__(self):super(Cnn, self).__init__()self.conv1 nn.Sequential( # 输入图像尺寸为(12828)nn.Conv2d(in_channels1, # 输入图像的深度 灰度图为1rgb图为3out_channels16, # 卷积核个数输出图像的深度kernel_size5, # 卷积核尺寸5*5*1stride1, # 步长padding2 # 填充大小 如果想要 con2d 出来的图片长宽没有变化, padding(kernel_size-1)/2), # 输出图像尺寸为(16,28,28)nn.ReLU(), # 激活函数nn.MaxPool2d(kernel_size2, # 池化小区域尺寸2*2区域模糊# stride2, # 步长默认kernel_size), # 输出图像尺寸为(16,14,14))self.conv2 nn.Sequential( # 输入图像尺寸为(16,14,14)nn.Conv2d(in_channels16, # 输入图像的深度out_channels32, # 卷积核个数输出图像的深度kernel_size5, # 卷积核尺寸5*5*16stride1, # 步长padding2 # 填充大小),nn.ReLU(),nn.MaxPool2d(kernel_size2,) # 输出图像尺寸为(32,7,7))self.out nn.Linear(32 * 7 * 7, 10) # 输出10*1的矩阵def forward(self, x):x self.conv1(x)x self.conv2(x)# x图像平铺成 (batch_size1, 32 * 7 * 7)x x.view(x.size(0), -1) # view中一个参数定为-1代表自动调整这个维度上的元素个数以保证元素的总数不变。output self.out(x)return outputcnn Cnn()
print(cnn)Cnn((conv1): Sequential((0): Conv2d(1, 16, kernel_size(5, 5), stride(1, 1), padding(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse))(conv2): Sequential((0): Conv2d(16, 32, kernel_size(5, 5), stride(1, 1), padding(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse))(out): Linear(in_features1568, out_features10, biasTrue)
)2.3.3.示意图⭐️
注由于画幅有限示意图仅画了1个大卷积层。