Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pytorch在网络模型内进行三维卷的中心裁剪_Python_3d_Conv Neural Network_Pytorch_Crop - Fatal编程技术网

Python 如何使用pytorch在网络模型内进行三维卷的中心裁剪

Python 如何使用pytorch在网络模型内进行三维卷的中心裁剪,python,3d,conv-neural-network,pytorch,crop,Python,3d,Conv Neural Network,Pytorch,Crop,在keras中,神经网络中有croping3d层用于三维体积的中心裁剪张量。然而,我在pytorch中找不到任何类似的东西,尽管它们有用于2D图像的torchvision.transforms.CenterCrop(size) 如何在网络中进行裁剪?否则,我需要在预处理中完成它,这是出于特定原因我最不想做的事情 我是否需要编写一个自定义层,比如沿每个轴切片输入张量?希望能从PyTorch中获得一些灵感,你不必为每件事都写图层,通常你可以在向前传球时直接做你想做的事情。在计算火炬张量时,需要记住的

keras
中,神经网络中有
croping3d
层用于三维体积的中心裁剪张量。然而,我在pytorch中找不到任何类似的东西,尽管它们有用于2D图像的
torchvision.transforms.CenterCrop(size)

如何在网络中进行裁剪?否则,我需要在预处理中完成它,这是出于特定原因我最不想做的事情


我是否需要编写一个自定义层,比如沿每个轴切片输入张量?希望能从PyTorch中获得一些灵感,你不必为每件事都写图层,通常你可以在向前传球时直接做你想做的事情。在计算火炬张量时,需要记住的基本规则是

  • 不要将torch张量转换为其他类型进行计算(例如,使用
    torch.sum
    而不是转换为numpy并使用
    numpy.sum
  • 不要执行就地操作(例如,更改张量的一个元素或使用就地运算符,因此使用
    x=x+…
    而不是
    x+=…
  • 也就是说,你可以用切片,也许看起来像这样

    def forward(self, x):
        ...
        x = self.conv3(x)
        x = x[:, :, 5:20, 5:20]    # crop out part of the feature map
        x = self.relu3(x)
        ...
    

    谢谢我将测试tmr,然后接受答案。顺便说一句,我对pytorch中的
    inplace
    操作有点困惑。当我使用这个
    self.relu=nn.relu(inplace=True)
    self.dropout=nn.dropout(inpalce=True)
    时会有问题吗,因为
    inplace
    在这种情况下也会发生多次。这些都是在pytorch API中特别实现的,所以应该可以。api会尽其所能确保您不会陷入混乱,因此,如果运行中没有错误,那么您应该不会有问题。这将更详细地描述。