CNN卷积神经网络——self-use

CNN卷积神经网络

整体架构介绍

在这里插入图片描述
在这里插入图片描述

上图中CNN要做的事情是:给定一张图片通过特征提取,识别出来是什么车。

CONV:卷积计算层,线性乘积 求和。
RELU:激励层,ReLU是激活函数的一种。
POOL:池化层,简言之,即取区域平均或最大。
FC:全连接层

一个完整的CNN结构包括:
输入层:输入图像
卷积层:特征提取
池化层:降低尺寸
全连接层:计算并输出

1、卷积层

                                                                    请添加图片描述在这里插入图片描述

请添加图片描述

卷积层:对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
滤波器:提取图像的不同特征,则用不同的滤波器filter,提取想要的关于图像的特定信息:颜色深浅或轮廓。滤波矩阵就是我们常说的卷积核。
上面最后一个图是动态图,图片是3通道(RGB),每一个通道都一个卷积核做内积,再加上偏置。

0 * 1+0 * 1+0 *(-1)+0 (-1)+0 * 0+1 * 1+0(-1)+0 *(-1)+1 * 0=1
0 *(-1)+0 * 0+0 *(-1)+0 * 0+1 * 0+1 *(-1)+0 *(1)+0 *(-1)+2 * 0= -1
0 * 0+0 * 1+0 * 0+0 *(1)+2 * 0+0 * 1+0 * 0+0 *(-1)+1 * 0=0

1+(-1)+0 +b(偏置1)=1。其余的依次计算即可

2、池化层:

在这里插入图片描述

在这里插入图片描述

池化方式一般有两种,一种为取最大值,另一种为取均值,池化的过程也是一个移动窗口在输入矩阵上滑动,滑动过程中去这个窗口中数据矩阵上最大值或均值作为输出,池化层的大小一般为2*2,步长为1。
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像(下采样)。

3、全连接层

在这里插入图片描述

全连接层在整个卷积神经网络中起到“分类器”的作用,即通过卷积、激活函数、池化等深度网络后,再经过全连接层对结果进行识别分类。

4、卷积结果计算公式

                                                                    在这里插入图片描述

FW,FH 卷积核的宽高,S步长(每次滑动长度),P边缘填充圈数,OH,OW输出特征图的高和宽。
为什么是2p,因为一个矩阵是对称的,zero-padding填充,左右,上下都要填充,所以是2p

5、边缘填充

在这里插入图片描述
在这里插入图片描述

1、第一个缺点是每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。你可不想让你的图像在每次识别边缘或其他特征时都缩小。
2、第二个缺点如果你注意角落边缘的像素,这个像素点(左上角红色框)只被一个输出所触碰或者使用,因为它位于这个2×2的区域的一角。但如果是在中间的像素点,比如这个(绿色 蓝色 红色方框交汇处),就会有许多2×2的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。
解决:
卷积操作之前填充这幅图像。可以沿着图像边缘再填充一层像素。丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点就被削弱了。为什么添加0?添加0做计算不会对结果产生影响。

6、参数共享

在这里插入图片描述

输入是一张图片,提取特征不同,那么卷积参数应该是不同的这样才合理。那为什么要参数共享?
1、参数共享能够很好的降低全连接网络的过拟合
2、参数共享也可以极大的降低参数的个数

### 使用卷积神经网络进行股票图像特征提取 #### 背景与原理 卷积神经网络CNN)通过其独特的结构能够有效地捕捉到输入数据的空间层次关系。对于股票图像而言,这些特性同样适用。CNN 中的关键组成部分——卷积核,在滑动窗口过程中执行局部感知域内的计算,从而捕获不同尺度下的模式[^1]。 #### 特征提取过程概述 当应用到股票图表时,CNN 的工作方式如下: - **预处理阶段**:首先需要将原始金融时间序列转换成适合机器学习算法使用的二维灰度级或彩色图片形式; - **构建模型架构**:定义一个多层感知机式的深层框架,其中包括若干交替排列的卷积层和池化层; - **训练流程**:利用标注好的历史行情作为监督信号来调整权重直至收敛; - **评估性能**:最后对新样本做预测之前先经过相同的变换再送入已训练完毕的分类器中得出结论。 #### Python 实现案例 下面给出一段简单的 PyTorch 代码片段展示如何创建一个基本版本的 CNN 来完成这项任务: ```python import torch from torchvision import transforms, models from PIL import Image class StockImageDataset(torch.utils.data.Dataset): """自定义的数据集类""" def __init__(self, image_paths, labels=None, transform=transforms.ToTensor()): self.image_paths = image_paths self.labels = labels self.transform = transform def __len__(self): return len(self.image_paths) def __getitem__(self, idx): img_path = self.image_paths[idx] label = None if self.labels is None else self.labels[idx] with open(img_path, 'rb') as f: img = Image.open(f).convert('L') sample = {'image': self.transform(img), 'label': label} return sample def create_cnn_model(): model = models.resnet18(pretrained=True) num_ftrs = model.fc.in_features # 修改最后一层全连接层适应新的类别数 model.fc = torch.nn.Linear(num_ftrs, output_classes_count) return model.cuda() if use_gpu else model.cpu() ``` 此段程序展示了怎样加载并准备用于训练的图像文件以及初始化 ResNet 预训练模型来进行迁移学习。实际项目里可能还需要考虑更多细节比如正则项设置、优化方法选择等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值