【发布时间】:2020-12-06 13:02:19
【问题描述】:
我尝试使用 Daniel 中的 this 教程中编写的 ModifiedTensorBoard 类
我找到了这个替代方案solution,但我在尝试时收到了这个错误代码。
class ModifiedTensorBoard(TensorBoard):
# Overriding init to set initial step and writer (we want one log file for all .fit() calls)
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.step = 1
self.writer = tf.summary.create_file_writer(self.log_dir)
self._log_write_dir = os.path.join(self.log_dir, MODEL_NAME)
# Overriding this method to stop creating default log writer
def set_model(self, model):
pass
# Overrided, saves logs with our step number
# (otherwise every .fit() will start writing from 0th step)
def on_epoch_end(self, epoch, logs=None):
self.update_stats(**logs)
# Overrided
# We train for one batch only, no need to save anything at epoch end
def on_batch_end(self, batch, logs=None):
pass
# Overrided, so won't close writer
def on_train_end(self, _):
pass
def on_train_batch_end(self, batch, logs=None):
pass
# Custom method for saving own metrics
# Creates writer, writes custom metrics and closes writer
def update_stats(self, **stats):
self._write_logs(stats, self.step)
def _write_logs(self, logs, index):
with self.writer.as_default():
for name, value in logs.items():
tf.summary.scalar(name, value, step=index)
self.step += 1
self.writer.flush()
在 _write_logs 方法中出现此错误
Context manager 'generator' doesn't implement __enter__ and __exit__.pylint(not-context-manager)
我也收到了我的 ModifiedTensorBoard 中没有 _train_step 的错误。
'ModifiedTensorBoard' object has no attribute '_train_step'
有人遇到同样的问题吗?
【问题讨论】:
-
我见过这种方法,但没有任何区别