8.2.4 3维数据的卷积运算

图像是3维数据,除了长、宽外还需要处理通道方向。在3维数据的卷积运算中,输入数据的通道数和卷积核的通道数须设为相同的值。当有多个通道时,会按通道进行输入数据和卷积核的卷积运算,并将结果相加得到输出数据。

图片[1]-8.2.4 3维数据的卷积运算-大赛人网
图片[2]-8.2.4 3维数据的卷积运算-大赛人网
图片[3]-8.2.4 3维数据的卷积运算-大赛人网

若想在通道方向获得多个卷积运算的输出,需要使用多个卷积核。

图片[4]-8.2.4 3维数据的卷积运算-大赛人网
图片[5]-8.2.4 3维数据的卷积运算-大赛人网
图片[6]-8.2.4 3维数据的卷积运算-大赛人网

8.2.5 API使用

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
# in_channels:输入通道数
# out_channels:输出通道数
# kernel_size:卷积核大小
# stride:步幅
# padding:填充幅度

例:

import torch
import matplotlib.pyplot as plt

# 读取图片
img = plt.imread("data/duck.jpg")
print("图片数据形状:", img.shape)

# 将图片数据转换为张量并改变形状
input = torch.tensor(img).permute(2, 0, 1).float()
print("输入特征图形状:", input.shape)

# 初始化卷积核
conv = torch.nn.Conv2d(in_channels=3, out_channels=3, kernel_size=9, stride=3, padding=0, bias=False)

# 对输入特征图进行卷积操作
output = conv(input)
print("输出特征图形状:", output.shape)

# 将输出特征图转换为图片
output = torch.clamp(output.int(), 0, 255)  # 限制输出在0到255之间
output = output.permute(1, 2, 0).detach().numpy()
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(img)
ax[1].imshow(output)
plt.axis("off")
plt.show()
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容