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

PyTorch对1个1通道的2x2x2的体积数据,使用一个1x1x1的卷积核进行卷积,输出通道数变为2。

import torch

# 定义输入数据
input_data = torch.randn(1, 1, 2, 2, 2)

print(input_data.shape)  # 输入数据大小为 [1, 1, 2, 2, 2]
print(input_data)

# 定义卷积层
conv_layer = torch.nn.Conv3d(in_channels=1,
                             out_channels=2,
                             kernel_size=1)

# 执行卷积操作
output_data = conv_layer(input_data)

print(output_data.shape)  # 输出数据大小为 [1, 2, 2, 2, 2]
print(output_data)

输出结果 :

torch.Size([1, 1, 2, 2, 2])
tensor([[[[[ 0.4288, -0.4255],
           [ 0.7242,  0.5814]],

          [[-0.5070,  0.1907],
           [ 1.1417,  0.2423]]]]])
torch.Size([1, 2, 2, 2, 2])
tensor([[[[[ 0.8344,  0.1135],
           [ 1.0836,  0.9632]],

          [[ 0.0447,  0.6335],
           [ 1.4360,  0.6770]]],


         [[[ 0.1553,  0.9422],
           [-0.1167,  0.0148]],

          [[ 1.0173,  0.3747],
           [-0.5013,  0.3271]]]]], grad_fn=<ConvolutionBackward0>)

对于输入1通道的2x2x2的体积数据,可以说明共有8个元素

-----------------------------------------------------------------------------------------------

[[ 0.4288, -0.4255],
 [ 0.7242,  0.5814]]    可以表示体积数据第一层的4个元素

-----------------------------------------------------------------------------------------------

[[-0.5070,  0.1907],
 [ 1.1417,  0.2423]]    可以表示体积数据第二层的4个元素

-----------------------------------------------------------------------------------------------

[[[ 0.4288, -0.4255],
  [ 0.7242,  0.5814]],

 [[-0.5070,  0.1907],
  [ 1.1417,  0.2423]]]    表示整个2x2x2的体积数据,也就是8个元素

-----------------------------------------------------------------------------------------------

可以观察到2x2x2的体积数据使用了3个方括号[ ],代表的是三维数据

而整个输入张量tensor()中有5个[ ],代表的是五维数据,也就是torch.Size([1, 1, 2, 2, 2])

对于输出2通道的2x2x2的体积数据,可以说明共有16个元素

-----------------------------------------------------------------------------------------------

[[[ 0.8344,  0.1135],
  [ 1.0836,  0.9632]],

 [[ 0.0447,  0.6335],
  [ 1.4360,  0.6770]]]    表示第一个通道的2x2x2的体积数据,共8个元素

-----------------------------------------------------------------------------------------------

[[[ 0.1553,  0.9422],
  [-0.1167,  0.0148]],

 [[ 1.0173,  0.3747],
  [-0.5013,  0.3271]]]    表示第二个通道的2x2x2的体积数据,共8个元素

-----------------------------------------------------------------------------------------------

[[[[ 0.8344,  0.1135],
   [ 1.0836,  0.9632]],

  [[ 0.0447,  0.6335],
   [ 1.4360,  0.6770]]],


 [[[ 0.1553,  0.9422],
   [-0.1167,  0.0148]],

  [[ 1.0173,  0.3747],
   [-0.5013,  0.3271]]]]    表示整个2通道的2x2x2的体积数据,也就是16个元素

-----------------------------------------------------------------------------------------------

可以观察到2通道的2x2x2的体积数据使用了4个方括号[ ],代表的是四维数据

而整个输出张量tensor()中有5个[ ],代表的是五维数据,也就是torch.Size([1, 2, 2, 2, 2])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将一维卷神经网络更改为多维卷神经网络的代码,需要进行以下几个步骤: 1. 更改输入数据的维度:一维卷神经网络的输入数据是一维的,而多维卷神经网络的输入数据可以是二维或三维的。因此,首先需要将输入数据的维度进行调整。 2. 更改卷核的维度:一维卷神经网络使用一维的卷核进行卷操作,而多维卷神经网络需要使用二维或三维的卷核。因此,需要将卷核的维度进行调整。 3. 更改卷操作:一维卷神经网络使用一维的卷操作,而多维卷神经网络需要使用二维或三维的卷操作。在代码中,需要将一维卷操作替换为相应维度的卷操作。 4. 调整其他层的参数:根据具体情况,可能还需要调整其他层的参数,如池化层、全连接层等。 下面是一个示例代码,将一维卷神经网络更改为二维卷神经网络: ```python import torch import torch.nn as nn # 定义二维卷神经网络 class ConvNet(nn.Module): def __init__(self): super(ConvNet, self).__init__() self.conv1 = nn.Conv2d(1, 16, kernel_size=3, stride=1, padding=1) self.relu = nn.ReLU() self.pool = nn.MaxPool2d(kernel_size=2, stride=2) self.fc = nn.Linear(16 * 7 * 7, 10) def forward(self, x): out = self.conv1(x) out = self.relu(out) out = self.pool(out) out = out.view(out.size(0), -1) out = self.fc(out) return out # 创建二维卷神经网络的实例 model = ConvNet() # 将输入数据的维度调整为二维 input_data = torch.randn(10, 1, 28, 28) # 前向传播 output = model(input_data) print(output.shape) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值