Image 如何使用Keras Conv3D为3D数据实现简单的CNN

Image 如何使用Keras Conv3D为3D数据实现简单的CNN,image,keras,convolution,Image,Keras,Convolution,我正在尝试实现一个三维卷积神经网络与医学成像,是由10个连续的图像切片,是64x64的形状。它们是灰度图像。因此,我的输入维度是64 x 64 x 10,我的第一层是 模型=顺序 model.addConv3D32,内核大小=3,3,3,步幅=1,1,1,输入形状=64,64,10 model.addActivation'relu' model.addMaxPoolG3DPool_size=2,2,2 用这段代码我得到了错误 输入0与层conv3d_1不兼容:预期ndim=5,发现ndim=4

我正在尝试实现一个三维卷积神经网络与医学成像,是由10个连续的图像切片,是64x64的形状。它们是灰度图像。因此,我的输入维度是64 x 64 x 10,我的第一层是

模型=顺序 model.addConv3D32,内核大小=3,3,3,步幅=1,1,1,输入形状=64,64,10 model.addActivation'relu' model.addMaxPoolG3DPool_size=2,2,2 用这段代码我得到了错误

输入0与层conv3d_1不兼容:预期ndim=5,发现ndim=4 因此,我改变了我的输入到

模型=顺序 model.addConv3D32,内核大小=3,3,3,步幅=1,1,1,输入形状=64,64,10,1 model.addActivation'relu' model.addMaxPoolG3DPool_size=2,2,2 现在我得到了错误

ValueError:'NumpyArrayIterator'中的输入数据应具有排名4。您传递了一个形状为',128,64,64,10,1的数组
我曾试图在Keras代码中覆盖这一点,但这会导致更多错误,而且我非常确定可以输入大量切片-我只是看不出问题出在哪里

这是我几天来的头痛

Keras会自动将图像中的通道数设置为深度,并使用它设置最终的过滤器大小。您应该改用Conv2D,因为您有3维图像,您可以将其理解为RGB图像

正如我所说,Keras会自动将深度固定为通道数。因此,如果您使用Conv2D,请将过滤器大小固定为5x5,它实际上将是5x5xnº通道

替换:

model.addConv3D32,内核大小=3,3,3,步幅=1,1,1,输入形状=64,64,10

致:

model.addConv2D32,内核大小=3,3,步幅=1,1,输入形状=64,64,10

您可以在该图像中看到实际发生的情况:

如果你想合并不同的频道,你必须用接收不同频道的KERA创建不同的塔,然后将它们组合在一起


你也可以看到发生了什么。

这是我几天来一直头疼的问题

Keras会自动将图像中的通道数设置为深度,并使用它设置最终的过滤器大小。您应该改用Conv2D,因为您有3维图像,您可以将其理解为RGB图像

正如我所说,Keras会自动将深度固定为通道数。因此,如果您使用Conv2D,请将过滤器大小固定为5x5,它实际上将是5x5xnº通道

替换:

model.addConv3D32,内核大小=3,3,3,步幅=1,1,1,输入形状=64,64,10

致:

model.addConv2D32,内核大小=3,3,步幅=1,1,输入形状=64,64,10

您可以在该图像中看到实际发生的情况:

如果你想合并不同的频道,你必须用接收不同频道的KERA创建不同的塔,然后将它们组合在一起


您还可以看到正在发生的情况。

Conv3D的输入形状有4个维度时间顺序、宽度、高度和通道

就你而言:

input_shape = (10, 64, 64, 1)

Conv3D的输入形状具有4维时间顺序、宽度、高度和通道

就你而言:

input_shape = (10, 64, 64, 1)

您能否编辑您的问题,说明如何初始化numpy数组,以及将什么传递给模型编译和拟合函数。您从何处得到此错误?在我看来,您以128的批大小对数据进行批处理,我认为您的输入形状应该是1,64,64,10,而不是64,64,10,1,尝试对它进行批处理,因为它看起来像是在代码中的某个地方对一些数组进行了批处理。需要看更多才能弄清楚。您能否编辑您的问题,说明如何初始化numpy数组,以及您将传递给模型编译和拟合函数的内容。您从何处得到此错误?在我看来,好像您在某个地方以128的批大小批处理数据,我认为您的输入形状应该类似于1,64,64,10不是64,64,10,1,尝试对其进行批处理,而不是一,因为在代码中的某个地方,您对某个数组进行了批处理。需要看更多才能弄清楚。