Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Google Colab和IBM Watson Studio中,代码相同但结果不同_Python_Google Colaboratory_Ibm Watson - Fatal编程技术网

Python 在Google Colab和IBM Watson Studio中,代码相同但结果不同

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

我正在用Fashion MNIST数据集训练一个简单的神经网络,该数据集可直接在tf.keras数据集API中获得。我在Colab和IBM Watson Studio中培训了该模型。但当我发现在Colab中,模型训练了1875次梯度更新,而在Watson Studio中,模型训练了60000次梯度更新时,我感到惊讶。为什么在这两种环境中没有不同的渐变更新?在科拉布和沃森工作室,他们不应该是一样的吗

此处提供了代码:

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没有。是的,但是为什么他们处理数据的方式不同呢?