DEEP LEARNING · 06
学习卷积层、池化层、图像识别案例与循环神经网络基础。
- CNN
- RNN
CNN 与 RNN 基础
1.卷积层
作用:提取图像特征

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.池化层
作用:降维

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.模型预测和评估