Pytouchでは、簡単にtenssorboardを使います。
8230 ワード
一、tenssorboardの簡単な紹介
TensorBoardは独立したパッケージ(pytouchではない)であり、このカバンの役割はあなたのモデルの様々なパラメータと結果を可視化することです。
以下はインストールです
SummaryWriter類はTensorBoardの使用と可視化のためのデータを記録するための主要な入り口です。
例を見てください。この例では、コードのコメント部分に注目してください。
上記の住所をブラウザに貼り付けると可視化の結果が見られます。
続きを見る:
一つの実験は多くの情報を記録することができる。UIの混乱を回避し、結果をより良くクラスタ化するために、図を階層的に命名して、図をグループ化することができる。例えば、「損失/トレーニング」と「損失/テスト」は一緒にグループ化されますが、「精度/トレーニング」と「精度/テスト」はTensorBoardインターフェースでそれぞれグループ化されます。
もっと簡単な例を見て、上記の話を理解します。
はい、今はテナントボールドに対して初歩的な認識を持っています。どのようにpytouchにモデルを保存して運行しているかも分かりました。どのようにテナントボードを運行しているかも分かりました。
しかし、前に述べたいくつかの関数についてはまだ詳しく説明していませんので、次はこれらの関数の具体的な使用を見ます。
二、touch.utils.tenssorboard関連のいくつかの関数
2.1 SummaryWriter()類
API:
SummaryWriterクラスは、所与のディレクトリにイベントファイルを作成し、要約とイベントを追加するための高度なAPIを提供する。このクラスはファイルの内容を非同期に更新します。これにより、トレーニングプログラムが訓練サイクルから直接にデータをファイルに追加する方法を呼び出すことができ、訓練速度を遅くしない。
以下はSummaryWriter()類の構造関数です。
パラメータの説明: 例:
API:
パラメータの説明: と理解される。 をカバーします。
例:
2.3 add_scalars関数
API:
パラメータの説明: 例:
2.4 add_histogram()
パラメータの説明: を作成します。 例:
これらを使って、より多くの関数について説明します。ここをクリックしてください。
ここで、Pytouchでtenssorboardを簡単に使った文章について紹介します。Pytouchに関する詳細はtenssorboardを使っています。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。
TensorBoardは独立したパッケージ(pytouchではない)であり、このカバンの役割はあなたのモデルの様々なパラメータと結果を可視化することです。
以下はインストールです
pip install tensorboard
TensorBoardをインストールすると、これらのユーティリティは、TensorBoard UIで可視化するためにPyTorchモデルと指標をカタログに記録することができます。PyTorchモデルとテンソルおよびCaffe 2ネットワークとBlobはスカラー,画像,ヒストグラム,パターンおよび埋め込み可視化をサポートしています。SummaryWriter類はTensorBoardの使用と可視化のためのデータを記録するための主要な入り口です。
例を見てください。この例では、コードのコメント部分に注目してください。
import torch
import torchvision
from torchvision import datasets, transforms
# , SummaryWriter ,
from torch.utils.tensorboard import SummaryWriter
# : 。 : , ./runs/
writer = SummaryWriter()
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# ResNet RGB
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))
grid = torchvision.utils.make_grid(images)
# : ,
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()
実行をクリックしてから、私たちはファイルの下で私たちが保存しているデータを見ることができます。その後、TensorBoardを使って可視化できます。TensorBoardは次のように実行するべきです。
tensorboard --logdir=runs
実行結果:上記の住所をブラウザに貼り付けると可視化の結果が見られます。
続きを見る:
一つの実験は多くの情報を記録することができる。UIの混乱を回避し、結果をより良くクラスタ化するために、図を階層的に命名して、図をグループ化することができる。例えば、「損失/トレーニング」と「損失/テスト」は一緒にグループ化されますが、「精度/トレーニング」と「精度/テスト」はTensorBoardインターフェースでそれぞれグループ化されます。
もっと簡単な例を見て、上記の話を理解します。
from torch.utils.tensorboard import SummaryWriter
import numpy as np
# : 。 : ./run/
writer = SummaryWriter()
for n_iter in range(100):
# : ,
writer.add_scalar('Loss/train', np.random.random(), n_iter)
writer.add_scalar('Loss/test', np.random.random(), n_iter)
writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
writer.close()
( );
tensorboard --logdir=run(run )
実験結果:はい、今はテナントボールドに対して初歩的な認識を持っています。どのようにpytouchにモデルを保存して運行しているかも分かりました。どのようにテナントボードを運行しているかも分かりました。
しかし、前に述べたいくつかの関数についてはまだ詳しく説明していませんので、次はこれらの関数の具体的な使用を見ます。
二、touch.utils.tenssorboard関連のいくつかの関数
2.1 SummaryWriter()類
API:
class torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment='',
purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')
機能:データをlog_dir
フォルダに保存して、TensorBoardのために使用します。SummaryWriterクラスは、所与のディレクトリにイベントファイルを作成し、要約とイベントを追加するための高度なAPIを提供する。このクラスはファイルの内容を非同期に更新します。これにより、トレーニングプログラムが訓練サイクルから直接にデータをファイルに追加する方法を呼び出すことができ、訓練速度を遅くしない。
以下はSummaryWriter()類の構造関数です。
def __init__(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120,
filename_suffix='')
役割:SummaryWriterオブジェクトを作成し、イベントと要約をイベントファイルに書き込みます。パラメータの説明:
log_dir
(文字列):ディレクトリの位置を保存します。デフォルト値はrun/CURRENT_DATETIME_HOSTNAMEは、運行毎に変更されます。階層フォルダ構造を使うと、運転状況を簡単に比較できます。例えば、それぞれの新しい実験のために「runs/exp 1」「runs/exp 2」などを渡して、それらの間で比較します。comment
(文字列):注釈logudir拡張子をデフォルトのロゴに追加します。dirロゴが割り当てられたらdirは、このパラメータが無効です。purge_step
(python:int):ログがステップT+X T+X T+Xに記録され、ステップT T Tで再起動されると、global_が消去されます。ステップが大きいか等しいすべてのイベントは、TensorBoardに隠れています。崩壊の実験と回復の実験は同じロゴを持つべきです。dirmax_queue
(python:int):「追加」コールの一つがディスクに強制的に更新される前に、未決イベントと要約のキューサイズ。標準値は10項目です。flush_secs
(python:int):ディスクの周波数(秒単位)に保留されたイベントと要約を更新する。デフォルトの値は2分に1回です。filename_suffix
(文字列):拡張子をlog(u)に追加します。dirディレクトリのすべてのイベントファイル名に含まれます。テナントboard.summary.writer.event_file_writer.Event FileWriterにおけるファイル名構造に関するより詳細な情報。
from torch.utils.tensorboard import SummaryWriter
# summary writer
writer = SummaryWriter()
# folder location: runs/May04_22-14-54_s-MacBook-Pro.local/
# summary writer
writer = SummaryWriter("my_experiment")
# folder location: my_experiment
# summary writer
writer = SummaryWriter(comment="LR_0.1_BATCH_16")
# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/
2.2 add_scalar関数API:
add_scalar(tag, scalar_value, global_step=None, walltime=None)
役割:スカラーデータをサマリーに追加するパラメータの説明:
tag
(string):データ識別子scalar_value
(float or string/blobaname):保存する値global_step
(int):記録するグローバルステップ値は、x座標walltime
(float):オプションで、イベント発生後の秒数でデフォルトのwalltime(time.time)例:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
x = range(100)
for i in x:
writer.add_scalar('y_2x', i * 2, i)
writer.close()
結果:2.3 add_scalars関数
API:
add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
役割:多くのスカラーデータをsummaryに追加します。パラメータの説明:
main_tag
(string):マークの親名tag_scalar_dict
(dict):タグと対応する値を格納するキーパッド値ペアglobal_step
(int):記録するグローバルステップ値walltime
(float):オプションの代替デフォルト時間Walltime(time.time)秒
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
r = 5
for i in range(100):
writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
'xcosx':i*np.cos(i/r),
'tanx': np.tan(i/r)}, i)
writer.close()
#
# 'run_14h' TensorBoard
結果:2.4 add_histogram()
add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)
役割:ヒストグラムをsummaryに追加します。パラメータの説明:
tag
(string):データ識別子values
(toch.Tensor、numpy.array、or string/blobaname):ヒストグラムの値global_step
(int):記録するグローバルステップ値bins
(string):One of{tenssorflow}、「aut」、「fd」、}がゴミ箱の作り方を決定しました。以下の場所で他のオプションを見つけられます。https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html walltime
C Optional override default walltime(time.time()seconds after epoch of event
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for i in range(10):
x = np.random.random(1000)
writer.add_histogram('distribution centers', x + i, i)
writer.close()
結果:これらを使って、より多くの関数について説明します。ここをクリックしてください。
ここで、Pytouchでtenssorboardを簡単に使った文章について紹介します。Pytouchに関する詳細はtenssorboardを使っています。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。