覆盖拟合函数后缺少 val_loss 和 val_accuracy
Missing val_loss and val_accuracy after overriding the fit function
按照Keras Tuner's documentation实现自定义objective函数,我的模型class的拟合函数如下:
class HyperAE(kt.HyperModel):
def build(self, hp):
...
def fit(self, hp, model, x, y, validation_data, **kwargs):
model.fit(x, y, **kwargs)
x_val, y_val = validation_data
y_pred = model.predict(x_val)
return {
"metric_1": -np.mean(np.abs(y_pred - y_val)),
"metric_2": np.mean(np.square(y_pred - y_val)),
}
当 运行 使用此模型的调谐器时,我看不到 val_loss
和其他像以前一样打印的验证指标。我怎样才能让它们再次打印?
发生这种情况是因为 validation_data
没有传递给实际的 model.fit
函数调用。问题可以通过以下方式解决:
class HyperAE(kt.HyperModel):
def build(self, hp):
...
def fit(self, hp, model, x, y, validation_data, **kwargs):
model.fit(x=x, y=y, validation_data=validation_data, **kwargs)
x_val, y_val = validation_data
y_pred = model.predict(x_val)
return {
"metric_1": -np.mean(np.abs(y_pred - y_val)),
"metric_2": np.mean(np.square(y_pred - y_val)),
}
按照Keras Tuner's documentation实现自定义objective函数,我的模型class的拟合函数如下:
class HyperAE(kt.HyperModel):
def build(self, hp):
...
def fit(self, hp, model, x, y, validation_data, **kwargs):
model.fit(x, y, **kwargs)
x_val, y_val = validation_data
y_pred = model.predict(x_val)
return {
"metric_1": -np.mean(np.abs(y_pred - y_val)),
"metric_2": np.mean(np.square(y_pred - y_val)),
}
当 运行 使用此模型的调谐器时,我看不到 val_loss
和其他像以前一样打印的验证指标。我怎样才能让它们再次打印?
发生这种情况是因为 validation_data
没有传递给实际的 model.fit
函数调用。问题可以通过以下方式解决:
class HyperAE(kt.HyperModel):
def build(self, hp):
...
def fit(self, hp, model, x, y, validation_data, **kwargs):
model.fit(x=x, y=y, validation_data=validation_data, **kwargs)
x_val, y_val = validation_data
y_pred = model.predict(x_val)
return {
"metric_1": -np.mean(np.abs(y_pred - y_val)),
"metric_2": np.mean(np.square(y_pred - y_val)),
}