【问题标题】:Training does not complete it's first epoch in Tensorflow 2.0训练没有完成它在 Tensorflow 2.0 中的第一个 epoch
【发布时间】:2020-02-18 12:02:42
【问题描述】:

我正在尝试使用 Tensorflow 2.0 在 Google 的 Colab 中训练模型。然而,训练并没有完成它的第一个 epoch。计步器已达到“未知”的 9144(仍在继续):

为什么会显示“未知”消息?

这是我的顺序模型:

感谢您的帮助。

【问题讨论】:

    标签: tensorflow keras google-colaboratory tensorflow-estimator tensorflow2.0


    【解决方案1】:

    您正在使用 tf.data 的 Dataset api,其中数据不一定会加载到内存中,因此无法知道数据集有多长,因此无法计算批次数。因此,在第一个 epoch 中,它是未知的,但在第一个 epoch 之后,分母将显示正确的数字。

    否则,如果您希望在第一个 epoch 本身中看到它,在 model.fit() 中,您可以通过使用其中的 steps_per_epoch 参数自己设置批次数,然后您将不会在第一个时代。但为此,请确保您的数据集重复次数与使用 repeat() 操作的时期数一样多。

    编辑

    repeat() 是一个数据集操作,它将重复数据集任意多次。因此,您将看到数据集中所有元素的次数与设置重复次数的次数一样多。

    【讨论】:

    • 您好,感谢您的回复。我在 model.fit() 中设置了“steps_per_epoch”,我可以看到分母。但是,我不确定如何使用“repeat()”操作。你能解释一下如何使用它吗?
    • 编辑了我的重复答案。让我知道你是否清楚。
    • 有没有办法计算/估计最大批次数?就我而言,计数器远远超过了训练实例的数量,并且仍在运行。我的培训ImageDataGenerator 说:Found 3505 images belonging to 1 classes. 和我的验证生成器说Found 389 images belonging to 1 classes.,现在我的柜台在 > 7k。这是什么意思?
    【解决方案2】:

    我遇到了同样的问题,但是在一个时期完成后,模型知道每批中有多少数据。所以之后它以正确的格式显示。

    Epoch 1/10
    219/219 [==============================] - 240s 1s/step - loss: -53.7426 - binary_accuracy: 0.1001 - val_loss: 0.0000e+00 - val_binary_accuracy: 0.0000e+00
    Epoch 2/10
    219/219 [==============================] - 20s 90ms/step - loss: -53.6805 - binary_accuracy: 0.1001 - val_loss: -53.3822 - val_binary_accuracy: 0.1003
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2020-05-05
      • 2021-06-28
      • 2020-10-22
      • 2015-12-06
      相关资源
      最近更新 更多