【发布时间】:2021-11-24 04:34:14
【问题描述】:
调用 fit 函数后,我可以看到模型在训练中收敛,但在调用评估方法后,它的行为就好像模型根本没有进行拟合。下面是最好的示例,我使用训练生成器进行训练和验证并获得不同的结果。
import tensorflow as tf
from tensorflow.keras.callbacks import ModelCheckpoint
from ImageGenerator import ImageGenerator
if __name__== "__main__":
batch_size=64
train_gen = ImageGenerator('synthetic3/train/open/*.png', 'synthetic3/train/closed/*.png', batch_size=batch_size)
model = tf.keras.applications.mobilenet_v2.MobileNetV2(weights=None, classes=2, input_shape=(256, 256, 3))
model.compile(optimizer='adam',
loss=tf.keras.losses.CategoricalCrossentropy(),
metrics=['accuracy'])
history = model.fit(
train_gen,
validation_data=train_gen,
epochs=5,
verbose=1
)
model.evaluate(train_gen)
结果
Epoch 1/5
19/19 [==============================] - 11s 600ms/step - loss: 0.7707 - accuracy: 0.5016 - val_loss: 0.6932 - val_accuracy: 0.5016
Epoch 2/5
19/19 [==============================] - 10s 533ms/step - loss: 0.6991 - accuracy: 0.5855 - val_loss: 0.6935 - val_accuracy: 0.4975
Epoch 3/5
19/19 [==============================] - 10s 509ms/step - loss: 0.6213 - accuracy: 0.6637 - val_loss: 0.6932 - val_accuracy: 0.4992
Epoch 4/5
19/19 [==============================] - 10s 514ms/step - loss: 0.4407 - accuracy: 0.8158 - val_loss: 0.6934 - val_accuracy: 0.5008
Epoch 5/5
19/19 [==============================] - 10s 504ms/step - loss: 0.3200 - accuracy: 0.8643 - val_loss: 0.6949 - val_accuracy: 0.5000
19/19 [==============================] - 3s 159ms/step - loss: 0.6953 - accuracy: 0.4967
这是有问题的,因为即使保存权重也会保存,就好像模型没有进行拟合一样。
【问题讨论】:
标签: python tensorflow machine-learning keras