【问题标题】:Unknown number of steps - Training convolution neural network at Google Colab Pro步数未知 - 在 Google Colab Pro 上训练卷积神经网络
【发布时间】:2020-08-13 15:19:07
【问题描述】:

我正在尝试在Google Colab Pro 运行(训练)我的CNN,当我运行我的代码时,一切正常,但它不知道步数,因此创建了一个无限循环。

Mounted at /content/drive
2.2.0-rc3
Found 10018 images belonging to 2 classes.
Found 1336 images belonging to 2 classes.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/300
      8/Unknown - 364s 45s/step - loss: 54.9278 - accuracy: 0.5410

我正在使用ImageDataGenerator() 来加载图像。我该如何解决?

【问题讨论】:

    标签: tensorflow conv-neural-network google-colaboratory


    【解决方案1】:

    迭代器不存储任何东西,它动态生成数据。当您使用数据集或数据集迭代器时,您必须提供steps_per_epoch。迭代器的长度在您遍历它之前是未知的。您可以将len(datafiles) 显式传递给.fit 函数。因此,您需要提供 steps_per_epoch,如下所示。

    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
    )
    

    更多细节提到here

    steps_per_epoch:整数或无。总步数(批次 样本)在宣布一个时期结束并开始下一个时期之前 时代。使用输入张量(例如 TensorFlow 数据)进行训练时 张量,默认 None 等于你的样本数 数据集除以批量大小,如果无法确定,则为 1。 如果 x 是 tf.data 数据集,并且 'steps_per_epoch' 为 None,则 epoch 将一直运行到输入数据集用完为止。这个论点不 支持数组输入。

    我注意到您正在使用二进制分类。使用ImageDataGenerator 时要记住的另一件事是提供class_mode,如下所示。否则会出现错误(在 keras 中)或 50% 的准确率(在 tf.keras 中)。

    train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
                                                               directory=train_dir,
                                                               shuffle=True,
                                                               target_size=(IMG_HEIGHT, IMG_WIDTH),class_mode='binary') #
    

    【讨论】:

    • 非常感谢 :)
    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2016-07-21
    • 2020-09-10
    • 2016-08-17
    • 2017-08-31
    • 2016-07-01
    相关资源
    最近更新 更多