我有Keras模型如下所示,我试图将图像输入与数值特征向量合并,但有以下错误:
ValueError: Input 0 is incompatible with layer flatten_2: expected min_ndim=3, found ndim=2
出现在以下语句中:
value_model.add(Flatten(input_shape=(12,)))
我有什么办法解决这个问题吗?在
image_input = Input((512, 512, 1))
vector_input = Input((12,))
image_model = Sequential()
image_model.add(Convolution2D(32,8,8, subsample=(4,4), input_shape=(512,512,1)))
image_model.add(Activation('relu'))
image_model.add(Convolution2D(64,4,4, subsample=(2,2)))
image_model.add(Activation('relu'))
image_model.add(Convolution2D(64,3,3, subsample=(1,1)))
image_model.add(Activation('relu'))
image_model.add(Flatten())
image_model.add(Dense(512))
image_model.add(Activation('relu'))
value_model = Sequential()
value_model.add(Flatten(input_shape=(12,)))
value_model.add(Dense(16))
value_model.add(Activation('relu'))
value_model.add(Dense(16))
value_model.add(Activation('relu'))
value_model.add(Dense(16))
value_model.add(Activation('relu'))
merged = Concatenate([image_model, value_model])
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(1, activation='sigmoid'))
model = Model(inputs=[image_input, vector_input], outputs=output)
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['acc'])
model.fit([images, features], y, epochs=5)
编辑-1
以下是全文:
^{pr2}$编辑-2
当我做以下事情时:
output = final_model.add(Dense(1, activation='sigmoid'))
我还是收到了同样的错误。在
您可以更改代码以反映新的
Keras 2 API
,如下所示。在您的代码中,您正在尝试旧的keras
API和Keras 2 API
的混合方法。在我还建议在keras2api中使用新的}层。
Conv2D
层,而不是{subsample
参数现在在Conv2D
中称为strides
考虑一个玩具数据集
^{pr2}$培训
相关问题 更多 >
编程相关推荐