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)