我正在研究Keras中的分段问题,我希望在每个训练时代结束时显示分段结果.
我想要一些类似于Tensorflow:如何在Tensorboard中显示自定义图像(例如Matplotlib Plots),但使用Keras.我知道Keras有TensorBoard回调但看起来似乎有限.
我知道这会破坏Keras的后端抽象,但无论如何我对使用TensorFlow后端感兴趣.
是否有可能通过Keras + TensorFlow实现这一目标?
我正在安装train_generator,并通过自定义回调,我想在validation_generator上计算自定义指标.如何访问PARAMS validation_steps和validation_data 一个自定义的回调中?它不在self.params,也找不到它self.model.这就是我想做的事情.任何不同的方法都会受到欢迎.
model.fit_generator(generator=train_generator,
steps_per_epoch=steps_per_epoch,
epochs=epochs,
validation_data=validation_generator,
validation_steps=validation_steps,
callbacks=[CustomMetrics()])
class CustomMetrics(keras.callbacks.Callback):
def on_epoch_end(self, batch, logs={}):
for i in validation_steps:
# features, labels = next(validation_data)
# compute custom metric: f(features, labels)
return
Run Code Online (Sandbox Code Playgroud)
keras:2.1.1
更新
我设法将验证数据传递给自定义回调的构造函数.但是,这会导致令人讨厌的"内核似乎已经死亡.它会自动重启".信息.我怀疑这是否是正确的方法.有什么建议吗?
class CustomMetrics(keras.callbacks.Callback):
def __init__(self, validation_generator, validation_steps):
self.validation_generator = validation_generator
self.validation_steps = validation_steps
def on_epoch_end(self, batch, logs={}):
self.scores = {
'recall_score': [],
'precision_score': [],
'f1_score': []
}
for batch_index in range(self.validation_steps):
features, y_true = next(self.validation_generator)
y_pred = np.asarray(self.model.predict(features))
y_pred = y_pred.round().astype(int) …Run Code Online (Sandbox Code Playgroud)
我正在Keras(tensorflow后端)构建一个简单的Sequential模型.在培训期间,我想检查各个培训批次和模型预测.因此,我正在尝试创建一个自定义Callback,以保存每个培训批次的模型预测和目标.但是,该模型不使用当前批次进行预测,而是使用整个训练数据.
我怎样才能将当前的培训批次交给Callback?
我如何访问Callbackself.predhis和self.targets中保存的批次和目标?
我当前的版本如下:
callback_list = [prediction_history((self.x_train, self.y_train))]
self.model.fit(self.x_train, self.y_train, batch_size=self.batch_size, epochs=self.n_epochs, validation_data=(self.x_val, self.y_val), callbacks=callback_list)
class prediction_history(keras.callbacks.Callback):
def __init__(self, train_data):
self.train_data = train_data
self.predhis = []
self.targets = []
def on_batch_end(self, epoch, logs={}):
x_train, y_train = self.train_data
self.targets.append(y_train)
prediction = self.model.predict(x_train)
self.predhis.append(prediction)
tf.logging.info("Prediction shape: {}".format(prediction.shape))
tf.logging.info("Targets shape: {}".format(y_train.shape))
Run Code Online (Sandbox Code Playgroud)