use*_*814 1 python neural-network keras google-colaboratory
我正在尝试在 Google colab 上使用深度 MLP 训练 MNIST 数字数据集。我重新调整了输入并进行了数据预处理。模型代码如下:
#define the model layers
model = Sequential()
model.add(Dense(512, input_shape = input_shape, activation = "relu"))
model.add(Dense(256, activation = "relu"))
model.add(Dropout(0.1))
model.add(Dense(128,activation = "relu"))
model.add(Dense(64,activation = "relu"))
model.add(Dropout(0.1))
model.add(Flatten())
model.add(Dense(tar_class,activation = "sigmoid"))
model.compile(optimizer = "adam",
loss = "categorical_crossentropy",
metrics = ["accuracy"])
model.summary()
history = model.fit(X_train,y_train,
epochs = 10,
validation_split = 0.1,
batch_size = 64,
verbose = True)
Run Code Online (Sandbox Code Playgroud)
当我运行 model.fit 代码时,仅对数据集中的 844 个样本进行训练,而不是对 60000 个样本进行训练。不过,这段代码在我本地的 jupyter 笔记本中运行良好。我想在 Colab 上工作,这样我就可以使用 GPU 来训练模型,这比我的本地机器更快。
有人可以帮我吗?
844 并不代表正在训练的样本数量,而是代表每个时期的步数。
步数是多少?
步骤的数量等于通过的次数,即(1 pass = 1 Forward Pass + 1 Backward pass)
在一个纪元中发生的次数。
步骤数计算如下:
no_of_steps_per_epoch = ceil(Total_no_of_samples / batch_size)
Run Code Online (Sandbox Code Playgroud)
为了完成一个时期,您必须迭代整个数据集。IE。迭代所有批次。
例如:X_train有60000个样本。
您已将validation_split指定为0.1。因此,该 X_train 的 0.1% 将用作验证数据。IE。它不会用于培训。
因此,训练样本数将为 (60000 - 6000) = 54000。
现在您已将batch_size指定为64。
因此,
no_of_steps_per_epoch = ceil(54000/64) = ceil(843.74) = 844
Run Code Online (Sandbox Code Playgroud)
这就是你得到844的方式。
这并不意味着您正在使用 844 个样本进行训练。