Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 根据损失的Keras示例记录每个批次的Keras指标_Python_Tensorflow_Keras_Loss - Fatal编程技术网

Python 根据损失的Keras示例记录每个批次的Keras指标

Python 根据损失的Keras示例记录每个批次的Keras指标,python,tensorflow,keras,loss,Python,Tensorflow,Keras,Loss,在Keras文档中,有一个自定义回调,用于记录每个批次的损失。这对我来说很好,但是我还想记录我添加的度量 例如,对于此代码: optimizer = Adam() loss = losses.categorical_crossentropy metric = ["accuracy"] model.compile(optimizer=optimizer, loss=loss, metrics=metric) clas

在Keras文档中,有一个自定义回调,用于记录每个批次的损失。这对我来说很好,但是我还想记录我添加的度量

例如,对于此代码:

optimizer = Adam()
loss = losses.categorical_crossentropy
metric = ["accuracy"]

model.compile(optimizer=optimizer,
              loss=loss,
              metrics=metric)


class LossHistory(Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))

loss_history = LossHistory()

history = model.fit(training_data, training_labels,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=(val_data, val_labels),
                    callbacks=[loss_history])

我不知道如何访问度量值。

度量值历史记录存储在
loss\u history中。loss

def on_batch_end(self、batch、logs={}):
self.loss.append(logs.get('loss'))
此方法将在每批结束时调用,并将损失度量添加到
self.loss
中,因此一旦培训完成,您可以直接使用
loss\u history.loss
访问此列表

我还应该补充一点,例如,如果您想包括准确性,您还可以做如下操作:

类丢失存储(回调):
列车上的def开始(self,logs={}):
self.loss=[]
self.accurity=[]
批处理端上的def(self、batch、logs={}):
self.loss.append(logs.get('loss'))
self.accurity.append(logs.get('accurity'))
然后通过以下方式访问它:


loss\u history.accurity

感谢您的快速回答,如果度量值更像是“tf.keras.loss.mape”呢?然后我可以对logs.get(tf.keras.loss.mape)执行同样的操作吗?或者如何存储?只要
tf.keras.loss.mape
被传递到度量数组中的
model.compile()
,或者如果使用
tf.keras.loss.mape
作为丢失函数,您就可以像以前一样处理
logs.get('loss')
但是(我想)你的意思是作为一个额外的指标,对吧?是的,我的意思是作为一个指标,例如指标mape和损失mse,因为mape可能看起来很有趣,但对于损失函数来说并不理想。我现在就试试这个,并在你的帖子上打勾作为答案,谢谢一个lotlogs。get(“准确性”)不起作用,我认为它需要“acc”出于某种原因,我要用它和“mape”再试一次。请注意,正如在链接的基本示例的最后一部分中可能看到的那样,它不会返回每个批次的损失,而是返回该批次结束时的平均损失。例如,在第3批次,将报告的损失是该批次与前两个批次的平均损失。