인공지능 개발자 수다(유튜브 바로가기) 자세히보기

Deep Learning/Pytorch

Pytorch(파이토치) 텐서보드(tensorboard) 사용하기(1) - 스칼라

Suya_03 2024. 2. 11. 20:21

목차

    반응형

    출처: 파이토치 튜토리얼

     

    PyTorch로 TensorBoard 사용하기

    TensorBoard는 머신러닝 실험을 위한 시각화 툴킷(toolkit)입니다. TensorBoard를 사용하면 손실 및 정확도와 같은 측정 항목을 추적 및 시각화하는 것, 모델 그래프를 시각화하는 것, 히스토그램을 보는

    tutorials.pytorch.kr

     

     

    1. 텐서보드(Tensorboard)는 언제 사용하면 좋을까?

    1. 모델 성능 분석: 모델의 학습 과정에서 손실과 정확도 같은 지표를 시각화하여, 모델이 잘 학습하고 있는지, 어떤 지점에서 문제가 발생하는지 분석할 때 유용합니다.
    2. 하이퍼파라미터 튜닝: 다양한 하이퍼파라미터의 조합을 실험하며 그 결과를 기록하고 비교할 때, TensorBoard를 사용하면 각 설정의 성능을 쉽게 비교하고 최적의 조합을 찾을 수 있습니다.
    3. 모델 디버깅: 모델의 구조를 시각화하여 잘못 연결된 레이어나 예상치 못한 데이터 흐름 등을 찾아낼 때 도움이 됩니다.
    4. 실험 결과 공유와 문서화: 연구나 프로젝트의 결과를 다른 사람과 공유하거나 문서화할 필요가 있을 때, TensorBoard의 시각화 도구는 매우 효과적인 수단이 됩니다.
    5. 대규모 실험 관리: 많은 수의 실험을 동시에 관리하고, 각각의 성능을 추적할 때 TensorBoard의 로깅 및 시각화 기능이 유용합니다.

    2. 텐서보드에는 어떠한 데이터를 시각화 할 수 있을까?

    TensorBoard는 스칼라 값 이외에도 다양한 유형의 데이터를 로깅하고 시각화할 수 있는 기능을 제공합니다. 여기에는 다음과 같은 유형의 데이터가 포함됩니다:

    1. Scalars: 수치 데이터를 시간에 따라 추적할 수 있습니다. 예를 들어, 학습 및 검증 손실, 정확도, 학습률 등을 로깅할 수 있습니다.
    2. Images: 모델이 생성한 이미지나 입력 이미지 등을 로깅하여 시각화할 수 있습니다. 이는 모델이 어떻게 이미지를 인식하고 처리하는지 확인하는 데 유용합니다.
    3. Histograms: 가중치, 그라디언트, 기타 수치 데이터의 분포를 시각화할 수 있습니다. 모델의 학습 과정에서 가중치의 변화를 모니터링하는 데 유용합니다.
    4. Graphs: 모델의 구조를 시각화할 수 있습니다. 이를 통해 모델의 아키텍처를 이해하고, 연산이 어떻게 흐르는지 확인할 수 있습니다.
    5. Projector: 고차원 데이터를 3D 공간에 시각화할 수 있습니다. 이는 임베딩 벡터 같은 고차원 데이터의 구조를 이해하는 데 도움이 됩니다.
    6. Text: 학습 과정에서 생성된 텍스트 데이터를 로깅할 수 있습니다. 예를 들어, 학습 과정에서의 중요한 이벤트를 기록하거나, 텍스트 생성 모델의 출력을 기록할 수 있습니다.
    7. Audio: 오디오 데이터를 로깅하고 재생할 수 있습니다. 오디오 생성 모델의 출력을 검증하는 데 유용합니다.
    8. PR Curves: 정밀도-재현율 곡선을 포함하여 분류 모델의 성능을 평가할 수 있습니다.

     

    이번 편에서는 파이토치(Pytorch)에서 딥러닝 학습 시,

    텐서보드를 사용해 스칼라 데이터를 수집하고, 모델의 구조를 시각화 하는 내용에 대해 설명하겠다.

    스칼라 데이터에는 Loss, Likelyhood, Accuracy, Precision, Recall, f1-score, Gradients 등이 있다.

    2. 설치

    conda 설치(권장)

    conda install pytorch matplotlib tensorboard

     

    pip 설치

    pip install pytorch matplotlib tensorboard

    3. 학습시 데이터 수집

    3.1. 텐서보드 writer객체 생성하기

    수집한 데이터를 저장하는 파일의 위치를 파라미터로 넣어준다.

    from torch.utils.tensorboard import SummaryWriter
    
    writer = SummaryWriter('logs/your_log_dir')

     

    3.2. 스칼라 로그 수집

    위에서 만든 writer객체를 이용해 특정 지표를 수집합니다.

    add_scalar 함수를 사용한다.

    • tag: 수집하는 데이터 이름
    • scalar_value: 수집하는 데이터, 학습시 확인하고싶은 Loss, likelyhood, 등의 값을 수집
    • global_step: 에포크 수
    add_scalar(tag, scalar_value, global_step=None, walltime=None)

     

     

    예제 학습 코드

    def train_model(iter):
        for epoch in range(iter):
            y1 = model(x)
            loss = criterion(y1, y)
            writer.add_scalar("Loss/train", loss, epoch)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

     

    3.3.  모델 구조 로그 수집

    add_graph 함수를 사용한다.

    파라미터로는 모델 객체, 데이터 이다.

    여기서 데이터는 모델의 인풋 형태에 맞기만 하면 된다.

    # 모델 구조를 TensorBoard에 추가
    random_input_to_model = torch.rand((1, 1, 28, 28)).to(device)
    writer.add_graph(model, random_input_to_model)

     

    3.4.  로깅 종료

    writer.close()

     

    4. 텐서보드 사용법

    4.1. 텐서보드 열기

    shell에서 사용하세요.

    tensorboard --logdir=logs/your_log_dir

     

    4.2. 텐서보드 에서 스칼라 확인

    먼저 스칼라를 살펴보자

    입력한 태그만큼 그래프를 확인할 수 있다.

    세로축은 accuarcy, loss 이다.

    그리고 그래프의 가로축은 에포크 이다. 

     

    4.2. 텐서보드 에서 모델 구조 보기

    반응형

    'Deep Learning > Pytorch' 카테고리의 다른 글

    Torchvision(토치비전) 사용법  (0) 2024.02.14
    [Pytorch] CNN 모델 돌려보기 예제  (0) 2022.12.27