gpt4 book ai didi

machine-learning - 当使用相同的训练数据作为验证数据时,为什么 val_loss 与训练损失不同?

转载 作者:行者123 更新时间:2023-11-30 08:31:01 25 4
gpt4 key购买 nike

就像这样:

x = keras.layers.Input(shape=(3,))
y = keras.layers.Dense(5)(x)

G = keras.models.Model(x, y,name='G')
G.compile(optimizer='rmsprop', loss='mse')

data_x = np.random.random((10, 3))
data_y = np.random.random((10, 5))

G.fit(data_x,data_y,shuffle=False,validation_data=[data_x,data_y],verbose=1)

结果:

Train on 10 samples, validate on 10 samples
Epoch 1/1
10/10 [==============================] - 27s 3s/step - loss: 0.4482 - val_loss: 0.4389

打印的loss和val_loss是不同的。在其他一些测试中,我发现差异很显着。为什么?

最佳答案

还有一些其他原因可能导致观察到的值存在差异:

  1. 根据this的回答我的问题是,显示的训练损失是在优化之前计算的。因此,在仅训练单个批处理的情况下,训练和验证损失评估之间仍然应用优化步骤。

  2. 有些层在训练阶段/测试阶段表现不同,例如 BatchNormalization 层或 Dropout 层,如 Keras FAQ 中所述。 。如果您点击链接,还有一个代码示例如何获取两个阶段之一的模型输出(不应用调用 model.fit 等方法时应用的优化>model.train_on_batch 等)

  3. 这是为了完整性,尽管差异会比您显示的要小得多。当使用 GPU 时,有些方法可能会非确定性执行。当多次执行相同的操作时,这可能会显示出轻微的数值差异,尽管我不确定这是否会成为您的具体计算中的问题。例如,请参阅 this 的答案关于 Tensorflow 的问题,或 this关于 Theano 的评论。

关于machine-learning - 当使用相同的训练数据作为验证数据时,为什么 val_loss 与训练损失不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49165351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com