Pytouchでは、簡単にtenssorboardを使います。


一、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に隠れています。崩壊の実験と回復の実験は同じロゴを持つべきです。dir
  • max_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を使っています。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。