学习记录:神经网络之三维卷积conv3d操作(3)

1、 PyTorch对2个2通道的5x4x3的体积数据,依次使用三个卷积核,输出通道数变为3。

import torch

# 定义输入数据
input_data = torch.randn(2, 2, 5, 4, 3) # 2个2通道的5x4x3的体积数据
print(input_data.shape)
#print(input_data)

# 定义卷积核
conv1 = torch.nn.Conv3d(in_channels=2, out_channels=2, kernel_size=(3, 2, 1), stride=1, padding=0)
conv2 = torch.nn.Conv3d(in_channels=2, out_channels=2, kernel_size=(1, 2, 1), stride=1, padding=0)
conv3 = torch.nn.Conv3d(in_channels=2, out_channels=3, kernel_size=(2, 2, 3), stride=1, padding=0)

# 进行卷积操作
output1 = conv1(input_data)
print(output1.shape)

output2 = conv2(output1)
print(output2.shape)

output3 = conv3(output2)

# 打印输出数据形状
print("Output shape:", output3.shape)

输出结果:

torch.Size([2, 2, 5, 4, 3])
torch.Size([2, 2, 3, 3, 3])
torch.Size([2, 2, 3, 2, 3])
Output shape: torch.Size([2, 3, 2, 1, 1])

2、PyTorch首先对2个2通道的5x6x7的体积数据使用3x3x3卷积核进行卷积,输出通道为3。对2个4通道的5x6x7的体积数据使用3x3x3卷积核进行卷积,输出通道为5。然后对两者拼接。

import torch

# 构造输入数据
x1 = torch.randn(2, 2, 5, 6, 7)  # 2个2通道的5x4x3的体积数据
x2 = torch.randn(2, 4, 5, 6, 7)  # 2个4通道的5x4x3的体积数据

# 构造卷积核
conv1 = torch.nn.Conv3d(in_channels=2, out_channels=3, kernel_size=(3, 3, 3))
conv2 = torch.nn.Conv3d(in_channels=4, out_channels=5, kernel_size=(3, 3, 3))

# 进行卷积操作
y1 = conv1(x1)  # 输出为2个3通道的5x3x3的体积数据
print(y1.shape)

y2 = conv2(x2)  # 输出为2个5通道的5x3x3的体积数据
print(y2.shape)

y = torch.cat([y1, y2], dim=1)  # 在通道维度上进行拼接(dim=1.在1这个位置是表示通道维度)

print(y.shape)

输出结果:

torch.Size([2, 3, 3, 4, 5])
torch.Size([2, 5, 3, 4, 5])
torch.Size([2, 8, 3, 4, 5])

除了通道维度不相同,其他维度都要一样,否则拼接不成功。

猜你喜欢

转载自blog.csdn.net/weixin_47247597/article/details/130585362