shu*_*nyo 2 conv-neural-network keras
我正在尝试实现这篇论文(模型架构在下面给出)并且有两个模型 -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))
Run Code Online (Sandbox Code Playgroud)
最后一行给出的错误是:*** ValueError:“concat”模式只能合并具有匹配输出形状的层,除了 concat 轴。图层形状:[(None, 74, 55), (None, 74, 55, 63)]
要回答我自己的问题,将形状更改为
shape_subset = (shape[1],shape[2],1)
Run Code Online (Sandbox Code Playgroud)
和
model.add(Merge([coarse_model.layers[10],fine_model.layers[1]],mode='concat',concat_axis=-1))
Run Code Online (Sandbox Code Playgroud)
使代码工作。
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |