Python 在Keras回调中访问变量
所以我有一个CNN。我已经做了自定义回调,确认有效,但我有一个问题 这是一个示例输出。 迭代5的示例(为简单起见,批量大小为10000) 我有2个回调(测试结果如输出所示): (1) 在每次迭代中更改学习速率。(2) 在每次迭代时打印精度 我有一个外部脚本,通过考虑准确性来确定学习速度 问题: 如何保证每次迭代的准确性,以便外部脚本能够访问它?本质上,每次迭代都是一个可访问的变量。使用Python 在Keras回调中访问变量,python,keras,Python,Keras,所以我有一个CNN。我已经做了自定义回调,确认有效,但我有一个问题 这是一个示例输出。 迭代5的示例(为简单起见,批量大小为10000) 我有2个回调(测试结果如输出所示): (1) 在每次迭代中更改学习速率。(2) 在每次迭代时打印精度 我有一个外部脚本,通过考虑准确性来确定学习速度 问题: 如何保证每次迭代的准确性,以便外部脚本能够访问它?本质上,每次迭代都是一个可访问的变量。使用AccuracyCallback.accurity 问题 我可以通过不断变化的学习速度。但是,一旦在每次迭代中以
AccuracyCallback.accurity
问题
我可以通过不断变化的学习速度。但是,一旦在每次迭代中以可访问变量的形式传递了它,我如何获得精度呢
示例
我的外部脚本决定迭代1时的学习速率:0.01。如何在迭代1时将精度作为外部脚本中的可访问变量而不是打印语句来获得?您可以
为了让日志.get('acc')正常工作,您必须告诉Keras监控它:
model.compile(optimizer='...', loss='...', metrics=['accuracy'])
最后,请注意这里的
精度类型为ndarray
。如果它给您带来任何问题,我建议将其包装起来:float(accurity)
我已经创建了一个,如前所述。但是问题是,我还有第二个回调,即学习率。我不太明白,如果你能够编写这两个回调,为什么不将它们合并到一个方法中呢?如果不清楚,请编辑您的问题并添加用于设置学习率的回调代码,这样我就可以看到如何合并它。这并不能回答一般问题,因此我将打开一个关于Keras变量和回调的新问题。这些变量不会显示在摘要中。
class AccCallback(keras.callbacks.Callback):
def on_batch_end(self, batch, logs={}):
accuracy = logs.get('acc')
# pass accuracy to your 'external' script and set new lr here
model.compile(optimizer='...', loss='...', metrics=['accuracy'])