在Google Colab问题中训练MNIST数据集:

时间:2020-05-23 09:26:17

标签: python tensorflow machine-learning keras deep-learning

我正在使用专业版的Google colab笔记本执行CNN。尽管x_train的形状为(60,000,28,28)。该模型仅在1875行上接受训练。有人遇到过这个问题吗?我的模型在本地计算机的jupyter笔记本上运行良好。它可以在所有60,000行上运行

    import tensorflow as tf
    mnist = tf.keras.datasets.mnist

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train = x_train.astype('float32') / 255.0
    y_train = y_train.astype('float32') / 255.0

    print("x_train.shape:", x_train.shape)

    #Build the model
    from tensorflow.keras.layers import Dense, Flatten, Dropout
    model = tf.keras.models.Sequential([
            tf.keras.layers.Flatten(input_shape=(28,28)),
            tf.keras.layers.Dense(128, activation='relu'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(10, activation='softmax')
    ])

    r = model.fit(x_train, y_train, validation_data=(x_test,y_test), epochs = 10)


    Output:

    x_train.shape: (60000, 28, 28)

    Epoch 1/10
    1875/1875 [==============================] - 3s 2ms/step - loss: 2.2912e-06 - accuracy:                            0.0987 - val_loss: 7716.5078 - val_accuracy: 0.0980

2 个答案:

答案 0 :(得分:3)

1875是许多批次。默认情况下,批次包含32个样本。
60000/32 = 1875

答案 1 :(得分:0)

如果您使用keras,而不是tensorflow.keras,则日志将显示:

x_train.shape: (60000, 28, 28)
Train on 60000 samples, validate on 10000 samples
Epoch 1/10
60000/60000 [==============================] - 6s 107us/step - loss: 0.9655 - val_loss: 20.2422

但是它们在内部都是相同的,一个在显示要训练的样本数(keras),另一个在显示迭代数(tf.keras)。

您可能无法一次训练所有60000个样本,我们需要对输入进行批处理,以免出现GPU内存不足的情况。您可以尝试尽可能多地增加batch_size,但是在此之后,您会收到诸如OOMError,CUDA内存不足之类的错误。