Pytorch 에서 tensorboard 를 간단하게 사용 합 니 다.
9190 단어 Pytorchtensorboard
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 를 사용 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytorch에서 shuffle을 사용하여 데이터를 흐트러뜨리는 작업우선 내가 너에게 한 가지 알려줘야 할 것은 바로pytorch의tensor이다. 만약에random을 직접 사용한다면.shuffle는 데이터를 흐트러뜨리거나 아래의 방식을 사용하여 직접 쓰기를 정의합니다. 그러면 혼란...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.