machine learning

AttributeError: module 'tensorflow' has no attribute 'Summary'

ksyke 2024. 7. 8. 09:44

TensorFlow 2.X 버전에서 tf.Summary는 더이상 사용되지 않는다.

다음의 코드로 바꿔서 진행한다.

기존의 write_log

def write_log(callback, name, loss, batch_no):
  summary = tf.Summary()
  summary_value = summary.value.add()
  summary_value.simple_value = loss
  summary_value.tag = name
  callback.writer.add_summary(summary, batch_no)
  callback.writer.flush()

최신 write_log

class CustomTensorBoardCallback(tf.keras.callbacks.Callback):
    def __init__(self, log_dir):
        super(CustomTensorBoardCallback, self).__init__()
        self.log_dir = log_dir
        self.writer = tf.summary.create_file_writer(log_dir)

    def write_log(self, name, loss, batch_no):
        with self.writer.as_default():
            tf.summary.scalar(name, loss, step=batch_no)
            self.writer.flush()

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
custom_tensorboard_callback = CustomTensorBoardCallback(log_dir)

custom_tensorboard_callback.write_log('discriminator_loss', np.mean(dis_losses), epoch)
custom_tensorboard_callback.write_log('generator_loss', np.mean(gen_losses), epoch)