我们发现,在用Sequential去搭建网络的时候,其中有predict和predict_classes两个预测函数,前一个是返回的精度,后面的是返回的具体标签。但是,在使用keras.models.Model去做的时候,就会发现,它只有一个predict函数,没有返回标签的predict_classes函数,所以,针对这个问题,我们将其改写。改写如下:
def my_predict_classes(predict_data):
if predict_data.shape[-1] > 1:
return predict_data.argmax(axis=-1)
else:
return (predict_data > 0.5).astype('int32')
# 这里省略网络搭建部分。。。。
model = Model(data_input, label_output)
model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.Nadam(lr=0.002),
metrics=['accuracy'])
model.summary()
y_predict = model.predict(X_test)
y_pre = my_predict_classes(y_predict)
这样,y_pre就是具体的标签了。