我需要将其他信息合并到取决于当前批次的 Keras 损失函数中。由于 Keras 损失只接受两个参数,因此我考虑通过在生成器对象上调用损失函数 next() 来添加此信息。但是,生成器只被调用一次(可能是在 model.compile() 中添加损失函数时)。这是一个示例代码:
data_batches = yield_data_batches()
meta_batches = yield_meta_batches()
....
model.compile(loss=loss_function, ...)
model.fit_generator(generator=data_batches, ....)
def loss_function(x, y):
meta_x, meta_y = next(meta_batches)
x *= meta_x # component-wise matrix multiplication
y *= meta_y # component-wise matrix multiplication
return mse(x, y)
有没有办法让损失函数在每次对 data_batch 进行评估时获得一个新的 meta_batch?还是有另一种方法可以将此元信息合并到损失函数中?
澄清: meta_x 和 meta_y 是二进制矩阵,应该从预测中消除某些元素,因为它们不应该计入损失。例如:
y_true = (a,b,c,0)
y_pred = (d,e,f,g)
y_meta = (1,1,1,0)
现在, y_pred*y_meta 应该抵消 g 以便它不计入损失。