gpt4 book ai didi

keras - Keras 中回调和进度条的准确性不匹配

转载 作者:行者123 更新时间:2023-12-01 09:55:11 29 4
gpt4 key购买 nike

我正在尝试学习 Keras 并使用 LSTM 解决分类问题。我希望能够绘制
准确率和损失,并在训练期间更新图。为此,我正在使用 callback function .
由于某种原因,我在回调中收到的准确性和损失与
拟合函数打印的精度和损失。

以下是我的代码的相关行:

class PlotCallbacks(Callback):
def on_batch_end(self, batch, logs={}):
print(logs)
return

# Create the model
model = Sequential()
model.add(Embedding(top_words, embedding_vector_length,input_length=max_conv_length))
model.add(LSTM(300))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, callbacks=[PlotCallbacks()], nb_epoch=1, batch_size=3, verbose=1)

运行程序时,我得到这个输出(每批的第一行由回调打印,第二行由model.fit打印):
    Epoch 1/1
{'acc': 0.0, 'loss': 1.1038421, 'batch': 0, 'size': 3}
3/25 [==>...........................] - ETA: 27s - loss: 1.1038 - acc: 0.0000e+00

{'acc': 1.0, 'loss': 1.0622898, 'batch': 1, 'size': 3}
6/25 [======>.......................] - ETA: 19s - loss: 1.0831 - acc: 0.5000

{'acc': 1.0, 'loss': 0.91526389, 'batch': 2, 'size': 3}
9/25 [=========>....................] - ETA: 13s - loss: 1.0271 - acc: 0.6667

{'acc': 1.0, 'loss': 0.36570337, 'batch': 3, 'size': 3}
12/25 [=============>................] - ETA: 11s - loss: 0.8618 - acc: 0.7500

{'acc': 1.0, 'loss': 0.1433304, 'batch': 4, 'size': 3}
15/25 [=================>............] - ETA: 9s - loss: 0.7181 - acc: 0.8000

{'acc': 1.0, 'loss': 0.041385528, 'batch': 5, 'size': 3}
18/25 [====================>.........] - ETA: 6s - loss: 0.6053 - acc: 0.8333

{'acc': 1.0, 'loss': 0.011424608, 'batch': 6, 'size': 3}
21/25 [========================>.....] - ETA: 3s - loss: 0.5205 - acc: 0.8571

{'acc': 1.0, 'loss': 0.0034991663, 'batch': 7, 'size': 3}
24/25 [===========================>..] - ETA: 1s - loss: 0.4558 - acc: 0.8750

{'acc': 1.0, 'loss': 0.0012318328, 'batch': 8, 'size': 1}
25/25 [==============================] - 26s - loss: 0.4377 - acc: 0.8800

我尝试打印 logs.get('acc'),并将精度保存到 PlotCallbacks 对象中的列表并打印该列表,但问题仍然存在。

有谁知道问题可能是什么?

谢谢

最佳答案

on_batch_end() type 回调函数获取刚刚训练的批次的准确性。而由 keras 打印的日志是它在当前纪元中看到的所有批次的平均值。您可以很容易地在日志中观察到这一点.. 说在前 2 个批次中,一个准确度是 0.01.0 ,这使得 2 个批次的整体准确度被视为 0.5000 . here正是计算平均值的地方。

此外,作为度量标准的准确性通常从纪元到纪元报告,因此您可以将回调更改为 on_epoch_end() .

关于keras - Keras 中回调和进度条的准确性不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42004948/

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