msdd’s blog

deep learning勉強中。プログラム関連のこと書きます。

PyTorchでTensorBoardのエラーが出た

はじめに

前までは、PyTorchでTensorBoardを使う時は、tensorboardX というものを使っていた。 最近では、PyTorchでもtorch.utils.tensorboardを使うことで、tensorboardを使えるようになっている。

このtorch.utils.tensorboardを使おうとした時に、エラーが出てつまったので、その解決方法を残しておく。

エラー

下のようなコードを実行してエラーが出た。

from torch.utils.tensorboard import SummaryWriter

出たエラーは下のようなものだった。

raise ImportError('TensorBoard logging requires TensorBoard with Python summary writer installed. '
ImportError: TensorBoard logging requires TensorBoard with Python summary writer installed. This should be available in 1.14 or above.

解決法

何通りか解決しそうな方法を試したので、書いておく。

1. TensorBoardのバージョン変更

エラー内容からTensorBoardのバージョンが低いことによるエラーと思われる。 TensorBoardのバージョンを確認して、もし1.14より低かったら、 1.14以降のバージョンのTensorBoardをインストールする。

pipでインストールしてるなら、下のようなコマンドで、出てくる。

pip list | grep tensorboard

anacondaとかなら、conda listを使って、表示されるものから探してみれば見れる。

実際に確認してみたが、きちんと、1.14以降であったので、これが原因ではなかった。

2. PyTorchのバージョン変更

PyTorchのTensorBoardはどのバージョンでも動くわけではない。 PyTorchでtensorboardが実験的(experimental)に使えるようになったのがv1.1.0で、v1.2.0からはexperimentalが外れて正式に使えるようになった。 なので、PyTorchのバージョンを確認して、もしバージョンがv1.2.0より下ならPyTorchのバージョンを上げる必要がある。 PyTorchのバージョンを確認方法は、下で見ることが出来る。

import torch
print(torch.__version__)

実際に確認してみたが、これも、1.2.0以降のバージョンがインストールされていたので、原因ではなかった。

3. 実行ファイル名をtensorboard.pyというファイル名にする

実行ファイル名がtensorboard.pyであったら変更する。

バージョンも全部そろってるはずなのにエラー出るので、ソースコード見に行った。

try:
    from tensorboard.summary.writer.record_writer import RecordWriter  # noqa F401
except ImportError:
    raise ImportError('TensorBoard logging requires TensorBoard with Python summary writer installed. '
                      'This should be available in 1.14 or above.')

ここで、テスト用で名前をtensorboard.pyという名前にしていまっていることに気が付いた。 tensorboardという名前が一致しているので、モジュールの読み込みが失敗していた。 ファイル名変えたらエラーが出なくなった。

まとめ

試しに動かしてみたいと、試し用で同じ名前にしてしまったことで、 結構な時間をとられてしまった。 モジュールと同じ名前を付けないように気を付けたい。