Hello Computer Vision

[matplotlib] tensorboard 여러 지표 저장하기, 지표 색깔 지정하기 본문

딥러닝

[matplotlib] tensorboard 여러 지표 저장하기, 지표 색깔 지정하기

지웅쓰 2024. 1. 26. 11:40

우선 직관적으로 코드만 보여주면 다음과 같다.

layout = {'Loss' :{
    'loss':['Multiline', ['loss/label', 'loss/unlabel', 'loss/unlabel_c', 'loss/aux']]
}}
writer.add_custom_scalars(layout)

이렇게 layout을 저장하고

       writer.add_scalar('loss/label', Lx, epoch+1)
        writer.add_scalar('loss/unlabel', Lu, epoch + 1)
        writer.add_scalar('loss/unlabel_c', Lu_c, epoch + 1)
        writer.add_scalar('loss/aux', Laux, epoch + 1)

값들을 다음과 같이 저장하면 된다. 그리고 tensorboard 에 들어가면 custom scalar 를 따로 볼 수 있다.

 

여러 loss값들을 뽑아서 tensorboard 에서 시각화해면

 

아쉽게도 tensorboard에서는 각 지표마다 색깔을 지정할 수 있는 방법이 없었다.

 

그래서 따로 데이터들을 csv 파일로 저장하고 matplolib을 사용해 시각화해보았다.

plt.plot(step, label, label = 'label', color = 'green')
plt.plot(step, unlabel, label = 'unlabel', color = 'red')
plt.plot(step, unlabel_c, label = 'unlabel_c', color = (1, 0.8, 0))
plt.plot(step, aux, label = 'aux', color = "CornflowerBlue")
plt.legend()

코드는 위와 같다.

csv파일을 불러오고 원하는 값들, x축에 해당하는 값들을 넣어주면 된다. 물론 이렇게 하지 않고

plt.plot(step, label, step, unlabel, step, unlabel_c, step, aux)
plt.legend()

이런 식으로 한번에 불러올 수는 있지만 해당 방법은 legend를 사용해도 어떤 지표인지 알 수 없다는 것이 단점이다.