本文目录
  1. 1.卷积层
  2. 2.池化层
  3. 3.CNN案例–图片识别
  4. RNN 循环神经网络

CNN 与 RNN 基础

1.卷积层

作用:提取图像特征

image-20260730195442907

conv = torch.nn.Conv2d(3,3,3,1)

输入通道(一般图片是3通道),输出通道(自定义),卷积核大小,步长,padding边框

import matplotlib.pyplot as plt
import torch
torch.manual_seed(33)
# 1.获取图片
img = plt.imread("img.jpg")
# 2. 数据转张量
data = torch.tensor(img,dtype=torch.float32)
# 3.转变数据
data = data.permute(2,0,1)
# 4.升维
data = data.unsqueeze(0)

# 4. 创建卷积层
conv = torch.nn.Conv2d(3,3,3,1)
output = conv(data)

# 5.降维
output = output.squeeze()
output = output.permute(1,2,0)

# 6.绘制图片内容
plt.imshow(output.detach().numpy())
plt.show()

2.池化层

作用:降维

image-20260730195727890

pool = torch.nn.MaxPool2d(kernel_size=3,stride=1)

池化层不能改变通道数,池化核大小,步长,padding

import matplotlib.pyplot as plt
import torch
# 1.读取图片
img =plt.imread("img.jpg")
# 2.图片形状处理
data = torch.tensor(img,dtype=torch.float32)
# 3.图片形状转换
data = data.permute(2,0,1)
# 4.升维
data = data.unsqueeze(0)
print(data.shape)

# 3.进入卷积层
conv = torch.nn.Conv2d(in_channels=3,out_channels=5,kernel_size=4,stride=2)
data = conv(data)
# 4.进入池化层--最大池化层
pool = torch.nn.MaxPool2d(kernel_size=3,stride=1)
data = pool(data)
print(data.shape)
# 5.数据处理--绘图
data = data.squeeze()
data = data.permute(1,2,0)
# plt.imshow(data[:,:,0].detach().numpy())
# plt.imshow(data[:,:,1].detach().numpy())
plt.imshow(data[:,:,2].detach().numpy())

plt.show()

3.CNN案例–图片识别

步骤:

1.准备数据

1.1加载数据

1.2切分训练集和测试集(数据集格式)

2.构建模型

在全连接层前加入适量的卷积层和池化层

3.模型训练

4.模型预测和评估

RNN 循环神经网络