如何在Keras中将Conv3D输出连接到MaxPooling2D?

时间:2018-01-15 07:37:59

标签: tensorflow keras convolution

我正在使用Keras来实施CNN。人们经常使用Conv2D来完成分类任务。但是,我想获得两个图像之间的关系,然后我决定尝试Conv3D。但是,我无法管理Conv3D的尺寸输出并匹配以下图层。

更具体地说,我想在(480,640,2)和输出(480,640,1)张量的两个堆叠图像上应用(5,5,2)滤镜。

enter image description here

原始Conv2D代码:(正常工作)

model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',input_shape=(480, 640, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
...

Conv3D代码:(不知道如何连接Conv3D和MaxPooling2D)

model.add(Conv3D(32, 2, input_shape=(480, 640, 2, 1), data_format="channels_last"))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))


model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
...

1 个答案:

答案 0 :(得分:1)

堆叠两个图像(记得按照你正在使用的后端堆叠,theano为channels_first,张量流为channels_last)并将{2}作为Conv2D中的通道数

或者,如果每张图片都有多个频道,请再次叠加它们并将频道总数传递给Conv2D