在每批keras中获取训练数据

Gettting the training data in ecery batch keras

我想知道是否可以得到每批keras中使用的训练数据集。

很容易得到y_true和y_pred,但我想知道那批用于预测的训练数据集。

def my_loss(y_true, y_pred):
    loss=K.mean(K.abs(y_true-y_pred))
    return loss

model.compile(loss=my_loss, optimizer='rmsprop', metrics=['mae'])

这是好的

但我想要这样的东西:

def my_loss(y_true, y_pred, x_train):

my_loss() missing 1 required positional argument: 'x_train'

感谢您的帮助

如果你想传递 y_truey_pred 以外的参数,你可以这样定义你的自定义损失:

def custom_loss(x_train):

    def my_loss(y_true, y_pred):
        loss=K.mean(K.abs(y_true-y_pred))
        # do something with x_train
        return loss

    return my_loss

编译时您可以传递与 x_train 相同形状的张量。

input_tensor = Input(shape=input_shape) #specify your input shape, same as x_train.
model.compile(loss=custom_loss(input_tensor), optimizer='rmsprop', metrics=['mae'])

这就是您定义自定义损失的方式。此外,您想要获取 x_train 的当前批次,现在批处理是您必须自己处理的事情。
终于可以在训练时使用 model.train_on_batch