Jupyter Notebookで__file__が使用できない

直感ディープラーニングの写経をJupyter Notebookで行っていて、 __file__ が使用できないことがわかった。

以下のように対象ファイルのパス情報を取得できない。

import os

os.path.dirname(__file__)

代わりに、以下を使用する。

from pathlib import Path

Path().resolve()

直感ディープラーニングではログディレクトリを作成して 学習結果を出力し、TensorBoardで確認を行う。

書籍場では以下のように実行ファイルが含まれているディレクトリ情報を取得し、 その配下にlogdirというディレクトリを作成する。

// 実行ファイルが/Users/xxx/ai/xxx.pyなら、
// 以下の記述で/Users/xxx/ai/logdirというディレクトリ情報がself.log_dirに格納される

self.log_dir = os.path.join(os.path.dirname(__file__), "logdir")

上述の通り、Jupyter Notebookではこの通りの写経すると、 NameError: name '__file__' is not defined とエラーになるため、下記のように記述する。

from pathlib import Path

self.log_dir = os.path.join(Path().resolve(), "logdir")