Python 在Google Colab和IBM Watson Studio中,代码相同但结果不同
我正在用Fashion MNIST数据集训练一个简单的神经网络,该数据集可直接在tf.keras数据集API中获得。我在Colab和IBM Watson Studio中培训了该模型。但当我发现在Colab中,模型训练了1875次梯度更新,而在Watson Studio中,模型训练了60000次梯度更新时,我感到惊讶。为什么在这两种环境中没有不同的渐变更新?在科拉布和沃森工作室,他们不应该是一样的吗 此处提供了代码:Python 在Google Colab和IBM Watson Studio中,代码相同但结果不同,python,google-colaboratory,ibm-watson,Python,Google Colaboratory,Ibm Watson,我正在用Fashion MNIST数据集训练一个简单的神经网络,该数据集可直接在tf.keras数据集API中获得。我在Colab和IBM Watson Studio中培训了该模型。但当我发现在Colab中,模型训练了1875次梯度更新,而在Watson Studio中,模型训练了60000次梯度更新时,我感到惊讶。为什么在这两种环境中没有不同的渐变更新?在科拉布和沃森工作室,他们不应该是一样的吗 此处提供了代码: import tensorflow as tf print(tf.__versi
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
import numpy as np
np.set_printoptions(linewidth=200)
import matplotlib.pyplot as plt
plt.imshow(training_images[0])
print(training_labels[0])
print(training_images[0])
training_images = training_images / 255.0
test_images = test_images / 255.0
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)])
model.compile(optimizer = tf.optimizers.Adam(),
loss = 'sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(training_images, training_labels, epochs=5)
以下是和的链接
编辑:经过更多的研究,我发现关于“批量大小”。由于代码中未包含“批次大小”,因此使用了默认的“批次大小”(32),因此Colab中的编号为1875(60000/32)。但我仍然不明白为什么Watson Studio中有60000个更新。我将感谢您在这方面的帮助。是的,区别在于两者都是不同的平台,具有不同的计算能力和不同的时间消耗。您在这两个方面培训的元素/样本数量是不同的,这就是为什么基于云计算的效率和计算能力,它们给出了不同的结果。而且watson中的代码仍在运行,这就是为什么watson中只有两个精度输出。让代码完全运行,您将获得总共5个训练输出。
我想你明白了。从TensorFlow 2.2.0版开始,如果未指定,批次大小将默认为32 现在,在Colab中,使用了TensorFlow版本2.4.0,由于代码中没有定义批量大小,因此使用了默认值,因此有60000/32=1875次迭代
另一方面,截至2020年12月30日,IBM Watson Studio中的TensorFlow版本为2.1.0,没有任何默认批量大小。因此,在这种情况下,数据集不是成批考虑的,因此有60000次迭代。“您在这两个方面培训的元素/样本数量不同”-为什么它们不同?当我使用相同的数据集时,它们不应该是相同的吗?为了更清晰,我对问题进行了编辑。我不关心不同的准确性。相反,我想知道的是为什么在Colab和Watson Studio中没有不同的训练样本?应该有多少样本?两个人中哪一个弄错了?@chughts有60000个样本。在Colab上有1875个渐变更新,在Watson Studio上有60000个更新。经过进一步的研究,我知道了“批量大小”。由于此处未提及“批量大小”,因此此处使用默认值(32),因此使用编号1875(60000/32)。但是我仍然不明白为什么Watson Studio中有60000个更新?我应该把这个问题转移到数据科学堆栈交换吗?从你的数字来看,区别似乎是Colab正在批处理,而Watson没有。是的,但是为什么他们处理数据的方式不同呢?