【Pytorch Lightning × Google Colaboratory】Tnesorboardでデータを可視化する方法

どーも、ぐるたか@guru_takaです。

Google Colaboratoryの環境で、PyTorch Lightningを使ってモデルを学習した後、Tnesorboardでデータを可視化する方法を紹介します!

開発環境
  • Google Colaboratory
  • Pytorch Lightning:0.7.4
  • Pytorch:1.4.0

Tnesorboardにログを残すサンプルコード

サンプルコードになりますが、コメントにあるように、まずは、'log': tensorboard_logsと値を返すように追記します。

class TrainNet(pl.LightningModule):

    @pl.data_loader
    def train_dataloader(self):
        return torch.utils.data.DataLoader(train, self.batch_size,shuffle=True)
    
    def training_step(self, batch, batch_nb):
        x, t = batch
        y = self.forward(x)
        loss = self.lossfun(y, t)
     ##### 追加 ######
        tensorboard_logs = {'train_loss': loss}
        results = {'loss': loss, 'log': tensorboard_logs}
     ################
        return results

class ValidationNet(pl.LightningModule):

    @pl.data_loader
    def val_dataloader(self):
        return torch.utils.data.DataLoader(val, self.batch_size)

    def validation_step(self, batch, batch_nb):
        x, t = batch
        y = self.forward(x)
        loss = self.lossfun(y, t)
        y_label = torch.argmax(y, dim=1)
        acc = torch.sum(t == y_label) * 1.0 / len(t)
        results = {'val_loss': loss, 'val_acc': acc}
        return results

    def validation_end(self, outputs):
        avg_loss = torch.stack([x['val_loss'] for x in outputs]).mean()
        avg_acc = torch.stack([x['val_acc'] for x in outputs]).mean()
     ##### 追加 ######
        tensorboard_logs = {'avg_acc': avg_acc}
        results =  {'val_loss': avg_loss, 'val_acc': avg_acc, 'log': tensorboard_logs}
     ################
        return results

Tnesorboardでグラフ化する方法

python
%load_ext tensorboard
%tensorboard --logdir ./lightning_logs/フォルダ名

フォルダ名のパスを%tensorboard --logdirの後に書いて、実行するだけです!

すると、こんな感じでtensroboradが表示されます。便利すぎる!!

参考リンク

参考 Google Colab上でTensorBoardを使うmsdd’s blog 参考 pytorch-lightningでログを可視化したい【機械学習】naruhodo desu ne !

コメントを残す