我正在使用Keras来实施CNN。人们经常使用Conv2D来完成分类任务。但是,我想获得两个图像之间的关系,然后我决定尝试Conv3D。但是,我无法管理Conv3D的尺寸输出并匹配以下图层。
更具体地说,我想在(480,640,2)和输出(480,640,1)张量的两个堆叠图像上应用(5,5,2)滤镜。
原始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)))
...
答案 0 :(得分:1)
堆叠两个图像(记得按照你正在使用的后端堆叠,theano为channels_first
,张量流为channels_last
)并将{2}作为Conv2D
中的通道数
或者,如果每张图片都有多个频道,请再次叠加它们并将频道总数传递给Conv2D
。