Pytorch 에서 tensorboard 를 간단하게 사용 합 니 다.

9190 단어 Pytorchtensorboard
1.tensorboard 의 간략 한 소개
Tensorboard 는 독립 된 가방(pytorch 가 아 닌)입 니 다.이 가방 의 역할 은 모델 의 각종 매개 변수 와 결 과 를 시각 화 하 는 것 입 니 다.
다음은 설치:

pip install tensorboard
Tensorboard 를 설치 하면 이 유 틸 리 티 프로그램 들 은 Tensorboard UI 에서 시각 화 할 수 있 도록 PyTorch 모델 과 지 표를 디 렉 터 리 에 기록 할 수 있 습 니 다.PyTorch 모델 과 장 량,Caffe 2 네트워크 와 Blob 는 모두 스칼라,이미지,직사 도,도형 과 삽입 시각 화 를 지원 합 니 다.
Summary Writer 클래스 는 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           )
실험 결과:
在这里插入图片描述
자,이제 tensorboard 에 대해 초보적인 인식 을 가지 게 되 었 고 pytorch 에서 모델 이 운행 하 는 과정 에서 의 데 이 터 를 어떻게 저장 하 는 지 알 게 되 었 으 며 tensorboard 를 어떻게 운행 하 는 지 알 게 되 었 습 니 다.
그러나 우 리 는 앞에서 언급 한 몇 가지 함 수 를 자세히 이야기 하지 않 았 기 때문에 다음 에 우 리 는 이 몇 가지 함수 의 구체 적 인 사용 을 보 겠 다.
2.torch.utils.tensorboard 와 관련 된 몇 가지 함수
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='')
역할:Tensorboard 에서 사용 할 수 있 도록 데 이 터 를log_dir폴 더 에 저장 합 니 다.
Summary Writer 클래스 는 주어진 디 렉 터 리 에 이벤트 파일 을 만 들 고 요약 과 이 벤트 를 추가 하 는 고급 API 를 제공 합 니 다.이 종류의 비동기 업데이트 파일 내용훈련 프로그램 이 훈련 순환 에서 데 이 터 를 파일 에 직접 추가 하 는 방법 을 사용 할 수 있 도록 해 훈련 속 도 를 늦 추 지 않 는 다.
다음은 Summary Writer()클래스 의 구조 함수 입 니 다.

def __init__(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, 
filename_suffix='')
역할:이벤트 파일 에 이벤트 와 요약 을 기록 하 는 Summary Writer 대상 을 만 듭 니 다.
매개 변수 설명:
  • log_dir(문자열):디 렉 터 리 위 치 를 저장 합 니 다.기본 값 은 run/URRENTDATETIME_HOSTNAME,실행 할 때마다 변 경 됩 니 다.레이 어 링 폴 더 구 조 를 사용 하면 운행 상황 을 쉽게 비교 할 수 있 습 니 다.예 를 들 어 모든 새로운 실험 에'runs/exp 1','runs/exp 2'등 을 전달 하여 비교 할 수 있 도록 한다.
  • comment(문자열):주석 logdir 접 두 사 를 기본 값 log 에 추가 합 니 다.dir。 만약 log 를 분배 했다 면dir,이 인자 가 잘못 되 었 습 니 다.
  • purge_step(python:int):로그 가 T+X T+X T+X T+X 붕괴 에 기록 되 어 있 고 T T T 를 다시 시작 할 때 global 를 제거 합 니 다.step 가 크 거나 같은 모든 이벤트 가 Tensorboard 에 숨겨 져 있 습 니 다.붕 괴 된 실험 과 회 복 된 실험 은 같은 log 가 있어 야 함 을 주의 하 세 요.dir。
  • max_queue(python:int):"추가"호출 중 하나 가 디스크 에 강제로 새로 고침 되 기 전에 미결 이벤트 와 요약 대기 열 크기 입 니 다.기본 값 은 10 개 항목 입 니 다.
  • flush_secs(python:int):걸 린 이벤트 와 요약 을 디스크 에 새로 고침 하 는 주파수(초 단위).기본 값 은 2 분 에 한 번 입 니 다.
  • filename_suffix(문자열):로그 에 접미사 추가dir 디 렉 터 리 의 모든 이벤트 파일 이름 에 있 습 니 다.tensorboard.summary.writer.eventfile_writer.EventFileWriter 에서 파일 이름 구조 에 대한 자세 한 정보 입 니 다.
  • 예:
    
    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)
    역할:스칼라 데 이 터 를 summary 에 추가 합 니 다.
    매개 변수 설명:
  • tag(string):데이터 식별 자
  • scalar_value(float or string/blobname):저장 할 값
  • 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(torch.Tensor,numpy.array,or string/blobname):직사 도 를 만 드 는 값
  • global_step(int):기록 할 전역 보폭 값
  • bins(string):One of{'tensor flow','auto','fd',...}.쓰레기통 제작 방식 이 결정 되 었 습 니 다.다음 위치 에서 다른 옵션 을 찾 을 수 있 습 니 다:https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
  • walltime (float) 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()
    
    결과:
    在这里插入图片描述
    저 는 위의 이것들 을 사 용 했 습 니 다.더 많은 함수 설명 에 대해 여 기 를 클릭 하여 보 세 요.https://pytorch.org/docs/stable/tensorboard.html#torch-utils-tensorboard
    Pytorch 에서 tensorboard 를 간단하게 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Pytorch 에서 tensorboard 를 사용 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기