【发布时间】:2019-02-12 04:39:04
【问题描述】:
我正在尝试为我的神经网络使用自定义指标,并且该指标只能在 epoch 结束时进行评估。我遇到的问题是在每批中评估指标,这不是想要的行为。请注意,我使用的是生成器,fit_generator 使用的是 keras。
validation_data 加载有实现keras.utils.Sequence的生成器
class DataGenerator(keras.utils.Sequence):
def __init__(self, inputs, labels, batch_size):
self.inputs = inputs
self.labels = labels
self.batch_size = batch_size
def __getitem__(self, index):
#some processing done here
return batch_inputs, batch_labels
def __len__(self):
return int(np.floor(len(self.inputs) / self.batch_size))
我尝试实现 keras 文档的建议,但我没有找到任何信息来指定仅应在 epoch 结束时使用的指标。
def auc_roc(y_true, y_pred):
auc, up_opt = tf.metrics.auc(y_true, y_pred)
K.get_session().run(tf.local_variables_initializer())
with tf.control_dependencies([up_opt]):
auc = tf.identity(auc)
return auc
所以现在auc_roc 在每批之后被调用,而不是在epoch 结束时单独调用。
【问题讨论】:
标签: python tensorflow keras