Tensorboardは次のようなコマンドラインから開始する必要があります。
tensorboard --logdir=path
コードから実行する必要があります。今まで私はこれを使います:
import os
os.system('tensorboard --logdir=' + path)
ただし、テンソルボードはシステムパスに含まれていないため、起動しません。私はPyCharmをWindowsのvirtualenvで使用しています。システムパスを変更したくないので、virtualenvから実行するのが唯一のオプションです。これを行う方法?
おそらく答えには少し遅れますが、これはPython 3.6.2で私にとってうまくいったものです:
import tensorflow as tf
from tensorboard import main as tb
tf.flags.FLAGS.logdir = "/path/to/graphs/"
tb.main()
デフォルトの構成でテンソルボードを実行し、「/ path/to/graphs /」でグラフと要約を探します。もちろん、ログディレクトリを変更して、好きなだけ変数を設定できます。
tf.flags.FLAGS.variable = value
それが役に立てば幸い。
同じ問題が発生するため、_tensorboard\main.py
_に触発された次の行を使用できます。
_from tensorboard import default
from tensorboard import program
tb = program.TensorBoard(default.PLUGIN_LOADERS, default.get_assets_Zip_provider())
tb.configure(argv=['--logdir', my_directory])
tb.main()
_
チェックするフォルダーとして_my_directory
_を使用します。 tb.main()
の後にブロックされたくない場合は、別のスレッドを作成することを忘れないでください。宜しくお願いします
Tensorboard V1.10を編集:
いくつかの個人的な理由により、私は別の方法でそれを書きます:
_class TensorBoardTool:
def __init__(self, dir_path):
self.dir_path = dir_path
def run(self):
# Remove http messages
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
# Start tensorboard server
tb = program.TensorBoard(default.PLUGIN_LOADERS, default.get_assets_Zip_provider())
tb.configure(argv=['--logdir', self.dir_path])
url = tb.launch()
sys.stdout.write('TensorBoard at %s \n' % url)
_
Tensorboard V1.12を編集:
テンソルボードのバージョン1.12のElad Weissとtsbertalanによると
_ def run(self):
# Remove http messages
log = logging.getLogger('werkzeug').setLevel(logging.ERROR)
# Start tensorboard server
tb = program.TensorBoard(default.get_plugins(), default.get_assets_Zip_provider())
tb.configure(argv=[None, '--logdir', self.dir_path])
url = tb.launch()
sys.stdout.write('TensorBoard at %s \n' % url)
_
それを実行するには、次のようにします。
_# Tensorboard tool launch
tb_tool = TensorBoardTool(work_dir)
tb_tool.run()
_
これにより、httpリクエストを妨害することなく、メインプロセスと同時にTensorboardサーバーを実行できます。
Tensorboard 2 API(2019)の使用:
from tensorboard import program
tb = program.TensorBoard()
tb.configure(argv=[None, '--logdir', tracking_address])
url = tb.launch()
注:tb.launch()は、プロセスが終了すると自動的に終了するデーモンスレッドを作成します。
別のスレッドでtensorBoard
を起動する必要があります。
def launchTensorBoard():
import os
os.system('tensorboard --logdir=' + tensorBoardPath)
return
import threading
t = threading.Thread(target=launchTensorBoard, args=([]))
t.start()
あなたのpythonインタプリタパスが:
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/bin/python3.6
Tensorboardの代わりにこのコマンドを実行できます
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6 /lib/python3.6/site-packages/tensorboard/main.py
それは私にとってはうまくいきます。
Tensorboard 2.1.0の場合、これは私にとっては機能します:python -m tensorboard.main --logdir $ PWD/logs
まず、envをアクティブにする必要があります。 (私の場合、conda installで致命的なエラーが発生したため、conda内のpipを介してtfを再インストールする必要がありました。)
以下はChrome=タブを開き、TensorBoardを起動します。目的のディレクトリとシステム名を指定するだけです。
import os
os.system(
"cd <directory> \
&& google-chrome http://<your computer name>:6007 \
&& tensorboard --port=6007 --logdir runs"
)
TensorBoardバージョン1.9.0以降、以下は、同じPythonプロセスでデフォルト設定でTensorBoardを起動するために機能します:
import tensorboard as tb
import tensorboard.program
import tensorboard.default
tb.program.FLAGS.logdir = 'path/to/logdir'
tb.program.main(tb.default.get_plugins(),
tb.default.get_assets_Zip_provider())
同じ問題がありました:Windowsで作業しているときに、バッチファイルを使用して、以下の例のようにテンソルボードを完全に自動化して開くことができます。
おそらく、目に見えるコンソールウィンドウ(cmd.exe)内でテンソルボードを開きたいので。 IDE(pycharm)内で1つのバッチファイルを呼び出すと、IDE内で実行されるため、バックグラウンドで実行され、コンソールが表示されないため、次の回避策を使用できます。バッチファイルを呼び出し、次にバッチファイルを呼び出してテンソルボードを開始します。
注:この例では、仮想環境として Anaconda を使用しています
batch_filename = 'start_tb.bat' # set filename for batch file
tb_command = 'tensorboard --logdir=' + log_dir # join strings for tensorflow command
# creates batch file that will call seconds batch file in console window (cmd.exe)
with open(os.path.join('invoke.bat'), "w") as f:
f.writelines('start ' + batch_filename)
# created batch file that activates Anaconda environment and starts tensorboard
with open(os.path.join(batch_filename), "w") as f:
f.writelines('\nconda activate YOURCondaEnvNAME && ' + tb_command) # change to your conda environment, or other virtualenv
# starts tensorboard using the batch files (will open console window)
# calls the 'invoke.bat' that will call 'start_tb.bat'
os.system('invoke.bat')
# starts tensorboard in default browser >> ATTENTION: must be adapted to local Host
os.system('start "" http://YOUR-COMPUTER-NAME:6006/') # just copy the URL that tensorboard runs at on your computer
ブラウザが適切に設定される前にすでに開かれているため、ブラウザ内でテンソルボードを更新する必要がある場合があります。
Tensorboard 2(2019)の完全なソリューションで、Chromeブラウザ、Windowsの場合)を自動的に開きます。condaとvirtualenvの両方の環境で機能します。
from multiprocessing import Process
import sys
import os
class TensorboardSupervisor:
def __init__(self, log_dpath):
super().__init__()
if os.name != 'nt':
raise NotImplementedError("Support only for Windows")
self.server = TensorboardServer(log_dpath)
self.chrome = ChromeProcess()
self.server.start()
self.chrome.start()
def finalize(self):
self.server.join()
self.chrome.join()
class TensorboardServer(Process):
def __init__(self, log_dpath):
super().__init__()
self.log_dpath= str(log_dpath)
def run(self):
# Supress prints to STDERR:
os.system(f'{sys.executable} -m tensorboard.main --logdir={self.log_dpath} 2> NUL')
class ChromeProcess(Process):
def run(self):
os.system(f'start chrome http://localhost:6006/')
初期化:
tb_sup = TensorboardSupervisor('path/to/logs')
トレーニング/テストを終了した後:
tb_sup.finalize()