我已经使用预先训练的模型并添加了一些层次来构建Keras序列模型。代码如下。然后尝试进行预测,预期的预测形状为(samples,16)的数量,但得到的预测结果为(samples,8)。建立模型和打印形状的代码如下。
`
layer_output = base_model.get_layer(output_layer).output
x=layer_output
x = Dense(1024, activation='sigmoid',name='1024_out')(x)
x = Dense(512, activation='sigmoid', name='512_out')(x)
x = Dense(16, activation='sigmoid',name="final")(x)
model = Model(base_model.input, outputs=x)
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
model.load_weights(weight_path)
The prediction shape andd the shape of last layer output
print(“ Pred”,model.predict(images [:2])。shape,“ Last Layer:”,model.layers [-1] .output_shape)`
输出为 Pred(2,8)Last Layer:(None,16)
答案 0 :(得分:1)
获得上述问题/问题的答案。对于多类分类,最后一层不是Sigmoid,而是softmax。 更改
x = Dense(16, activation='sigmoid',name="final")(x)
到
x = Dense(16, activation='softmax',name="final")(x)