在每批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_true
和 y_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。
我想知道是否可以得到每批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_true
和 y_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。