tensorflow:仅当 val_acc 可用时才能保存最佳模型,跳过 [英] tensorflow:Can save best model only with val_acc available, skipping

查看:261
本文介绍了tensorflow:仅当 val_acc 可用时才能保存最佳模型,跳过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 tf.callbacks.ModelChekpoint 的问题.正如您在我的日志文件中看到的,警告总是在计算 val_acc 的最后一次迭代之前出现.因此,Modelcheckpoint 永远找不到 val_acc

I have an issue with tf.callbacks.ModelChekpoint. As you can see in my log file, the warning comes always before the last iteration where the val_acc is calculated. Therefore, Modelcheckpoint never finds the val_acc

Epoch 1/30
1/8 [==>...........................] - ETA: 19s - loss: 1.4174 - accuracy: 0.3000
2/8 [======>.......................] - ETA: 8s - loss: 1.3363 - accuracy: 0.3500 
3/8 [==========>...................] - ETA: 4s - loss: 1.3994 - accuracy: 0.2667
4/8 [==============>...............] - ETA: 3s - loss: 1.3527 - accuracy: 0.3250
6/8 [=====================>........] - ETA: 1s - loss: 1.3042 - accuracy: 0.3333
WARNING:tensorflow:Can save best model only with val_acc available, skipping.
8/8 [==============================] - 4s 482ms/step - loss: 1.2846 - accuracy: 0.3375 - val_loss: 1.3512 - val_accuracy: 0.5000

Epoch 2/30
1/8 [==>...........................] - ETA: 0s - loss: 1.0098 - accuracy: 0.5000
3/8 [==========>...................] - ETA: 0s - loss: 0.8916 - accuracy: 0.5333
5/8 [=================>............] - ETA: 0s - loss: 0.9533 - accuracy: 0.5600
6/8 [=====================>........] - ETA: 0s - loss: 0.9523 - accuracy: 0.5667
7/8 [=========================>....] - ETA: 0s - loss: 0.9377 - accuracy: 0.5714
WARNING:tensorflow:Can save best model only with val_acc available, skipping.
8/8 [==============================] - 1s 98ms/step - loss: 0.9229 - accuracy: 0.5750 - val_loss: 1.2507 - val_accuracy: 0.5000

这是我训练 CNN 的代码.

This is my code for training the CNN.

    callbacks = [
        TensorBoard(log_dir=r'C:Users
edaDesktoplogs{}'.format(Name),
                    histogram_freq=1),
        ModelCheckpoint(filepath=r"C:Users
edaDesktopcheckpoints{}".format(Name), monitor='val_acc',
                        verbose=2, save_best_only=True, mode='max')]
    history = model.fit_generator(
        train_data_gen,
        steps_per_epoch=total_train // batch_size,
        epochs=epochs,
        validation_data=val_data_gen,
        validation_steps=total_val // batch_size,
        callbacks=callbacks)```

推荐答案

我知道这些事情有时会令人沮丧..但是 tensorflow 要求您明确写出要计算的指标名称

I know how frustrating these things can be sometimes..but tensorflow requires that you explicitly write out the name of metric you are wanting to calculate

您实际上需要说val_accuracy"

You will need to actually say 'val_accuracy'

metric = 'val_accuracy'
ModelCheckpoint(filepath=r"C:Users
eda.elhailDesktopcheckpoints{}".format(Name), monitor=metric,
                    verbose=2, save_best_only=True, mode='max')]

希望这有帮助 =)

这篇关于tensorflow:仅当 val_acc 可用时才能保存最佳模型,跳过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆