Tensorflow 从损失函数记录标量

Tensorflow 从损失函数记录标量,tensorflow,machine-learning,neural-network,deep-learning,keras,Tensorflow,Machine Learning,Neural Network,Deep Learning,Keras,我正在研究一个在Keras中实现的ML模型。对于这个模型,我编写了一个自定义损失函数,其中损失是3个其他变量的性能之和(a_成本、b_成本、c_成本)。损失函数可以工作,但我想对它进行一些调整,为此我想看看这3个其他变量的行为。如何记录这些标量以便在TensorBoard中显示 def custom_cost(y_true, y_pred): # compute a_cost, b_cost, c_cost cost = a_cost + b_cost + c_cost

我正在研究一个在Keras中实现的ML模型。对于这个模型,我编写了一个自定义损失函数,其中损失是3个其他变量的性能之和
(a_成本、b_成本、c_成本)
。损失函数可以工作,但我想对它进行一些调整,为此我想看看这3个其他变量的行为。如何记录这些标量以便在TensorBoard中显示

def custom_cost(y_true, y_pred):
    # compute a_cost, b_cost, c_cost

    cost = a_cost + b_cost + c_cost
    return cost

# ..build model...
model.compile(loss=custom_cost, optimizer=optimizers.Adam())
tensorboard = callbacks.TensorBoard(log_dir="./logs", write_graph=True)
tensorboard.set_model(model)
model.fit_generator(generator=custom_generator, epochs=100, steps_per_epoch=180,     callbacks=[tensorboard], verbose=True)

由于计算了
a_成本
b_成本
c_成本
,您可以定义三个单独的函数来分别计算它们。让我们:

def a_cost(y_true, y_pred):
    # compute a_cost
    ...
    return a_cost

def b_cost(y_true, y_pred):
    # compute b_cost
    ...
    return b_cost

def c_cost(y_true, y_pred):
    # compute c_cost
    ...
    return c_cost
现在,只需将这三个函数添加为
metrics

model.compile(..., metrics=[a_cost, b_cost, c_cost])

这意味着我只需要重新设计代码,在某个地方返回这些子损失变量。我认为iTunes会有其他的解决办法——而且——这个设计会显示实际的损失值——记住,
keras
中的损失通常也会考虑到规则化术语对
损失的实际值的偏差。顺便说一句,如果你不介意的话,我非常感谢你的支持。通过重新设计,我的意思是,我将把Custom_loss存储为类的方法,并将a_cost、b_cost和c_cost的描述符存储为该对象的属性。我看到人们这样做,但我真的不明白他们为什么会这样做。