mirror of
https://github.com/wassname/ray.git
synced 2026-08-05 13:21:03 +08:00
* Remove all __future__ imports from RLlib. * Remove (object) again from tf_run_builder.py::TFRunBuilder. * Fix 2xLINT warnings. * Fix broken appo_policy import (must be appo_tf_policy) * Remove future imports from all other ray files (not just RLlib). * Remove future imports from all other ray files (not just RLlib). * Remove future import blocks that contain `unicode_literals` as well. Revert appo_tf_policy.py to appo_policy.py (belongs to another PR). * Add two empty lines before Schedule class. * Put back __future__ imports into determine_tests_to_run.py. Fails otherwise on a py2/print related error.
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from tensorflow import keras
|
|
from ray.tune import track
|
|
|
|
|
|
class TuneReporterCallback(keras.callbacks.Callback):
|
|
"""Tune Callback for Keras."""
|
|
|
|
def __init__(self, reporter=None, freq="batch", logs={}):
|
|
"""Initializer.
|
|
|
|
Args:
|
|
reporter (StatusReporter|tune.track.log|None): Tune object for
|
|
returning results.
|
|
freq (str): Sets the frequency of reporting intermediate results.
|
|
One of ["batch", "epoch"].
|
|
"""
|
|
self.reporter = reporter or track.log
|
|
self.iteration = 0
|
|
if freq not in ["batch", "epoch"]:
|
|
raise ValueError("{} not supported as a frequency.".format(freq))
|
|
self.freq = freq
|
|
super(TuneReporterCallback, self).__init__()
|
|
|
|
def on_batch_end(self, batch, logs={}):
|
|
if not self.freq == "batch":
|
|
return
|
|
self.iteration += 1
|
|
for metric in list(logs):
|
|
if "loss" in metric and "neg_" not in metric:
|
|
logs["neg_" + metric] = -logs[metric]
|
|
if "acc" in logs:
|
|
self.reporter(keras_info=logs, mean_accuracy=logs["acc"])
|
|
else:
|
|
self.reporter(keras_info=logs, mean_accuracy=logs.get("accuracy"))
|
|
|
|
def on_epoch_end(self, batch, logs={}):
|
|
if not self.freq == "epoch":
|
|
return
|
|
self.iteration += 1
|
|
for metric in list(logs):
|
|
if "loss" in metric and "neg_" not in metric:
|
|
logs["neg_" + metric] = -logs[metric]
|
|
if "acc" in logs:
|
|
self.reporter(keras_info=logs, mean_accuracy=logs["acc"])
|
|
else:
|
|
self.reporter(keras_info=logs, mean_accuracy=logs.get("accuracy"))
|