1 回答
TA贡献1877条经验 获得超1个赞
keras的功能API更适合这种问题:
model = VGG16(weights='imagenet', include_top=False, input_shape=inputshape)
x = model.output
x = Conv2D(4096, kernel_size=(8, 8), activation="relu")(x)
x = Conv2D(4096, kernel_size=(1, 1), activation="relu")(x)
out = Conv2D(16, kernel_size=(1, 1), activation="softmax")(x)
F2model = Model(inputs=model.inputs, outputs=out)
for layer in F2model.layers[:25]:
layer.trainable = False
此外,我看到您正在使用具有softmax激活的binary_crossentropy,这可能会导致一些问题:
- 使用softmax和categorical_crossentropy
- 使用sigmoid和binary_crossentropy
并且要小心这个模型,使用4096的卷积将使你的参数数量真的非常动!
(本例中为 1.65 亿)
编辑
看起来你的问题只来自你的标签数组:
您的最后一层是卷积层,因此它期望一个带有形状的4D数组,但您正在给它一个形状数组
(batch_size, height, width, channel)(batch_size, 16)因此,要么将最后一层更改为:
out = Dense(16, activation="softmax")(x)
或者将标签数组更改为卷积层可接受。
添加回答
举报
