【问题标题】:Merge layers (concatenate) in keras在 keras 中合并图层(连接)
【发布时间】:2017-06-27 18:05:59
【问题描述】:

我正在尝试实现这个paper(模型架构如下所示)并有两个模型-coarse_model 和fine_model,它们需要在精细模型的第二步连接。但是,当我尝试使用最后一个轴连接时出现错误。


from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense, Merge
from keras.layers.core import Reshape
from keras.layers.merge import Concatenate
from keras import backend as K


# dimensions of our images
#img_width, img_height = 320, 240

img_width, img_height = 304,228


if K.image_data_format() == 'channels_first':
    input_shape = (3, img_width, img_height)
else:
    input_shape = (img_width, img_height, 3)

# coarse model
coarse_model = Sequential()
# coarse layer 1
coarse_model.add(Conv2D(96,(11,11),strides=(4,4),input_shape=input_shape,activation='relu'))
coarse_model.add(MaxPooling2D(pool_size=(2, 2)))
# coarse layer 2
coarse_model.add(Conv2D(256,(5,5),activation='relu',padding='same'))
coarse_model.add(MaxPooling2D(pool_size=(2, 2)))
# coarse layer 3
coarse_model.add(Conv2D(384,(3,3),activation='relu',padding='same'))
# coarse layer 4
coarse_model.add(Conv2D(384,(3,3),activation='relu',padding='same'))
# coarse layer 5
coarse_model.add(Conv2D(256,(3,3),activation='relu',padding='same'))
coarse_model.add(Flatten())
# coarse layer 6
coarse_model.add(Dense(4096,activation='relu'))
# coarse layer 7
coarse_model.add(Dense(4070,activation='linear'))

# fine model
fine_model = Sequential()
fine_model.add(Conv2D(63,(9,9),strides=(2,2),input_shape=input_shape,activation='relu'))
fine_model.add(MaxPooling2D(pool_size=(2, 2)))

# reshape coarse model to shape of fine model
shape = fine_model.layers[1].output_shape
shape_subset = (shape[1],shape[2])


coarse_model.add(Reshape(shape_subset))
model = Sequential()
model.add(Merge([coarse_model.layers[10],fine_model.layers[1]],mode='concat',concat_axis=3))

最后一行给出的错误是: *** ValueError:“concat”模式只能合并具有匹配输出形状的图层,除了 concat 轴。图层形状:[(None, 74, 55), (None, 74, 55, 63)]

【问题讨论】:

  • 代码的哪一部分出现错误?请将其添加到您的问题中
  • 最后一行。在合并命令上。

标签: keras conv-neural-network


【解决方案1】:

为了回答我自己的问题,将形状更改为

shape_subset = (shape[1],shape[2],1)

和

model.add(Merge([coarse_model.layers[10],fine_model.layers[1]],mode='concat',concat_axis=-1))

使代码工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2019-02-20
    • 1970-01-01
    • 2020-05-29
    • 2020-03-28
    相关资源
    最近更新 更多