지금 파이썬을 공부하는데 잘 모르겠어서..!!
epoch 의 데이터 gan_loss, val_mse, psnr, mse 의 데이터를 읽어서 리스트명 gan_loss, val_mse, psnr, mse 으로 모든 epoch 데이터를 각 리스트의 함목으로 포함하도록 만들고, 이 리스트를 이용하여 numpy array를 만들어서, 각각의 평균, 최대값, 최소값을 구하고, gan_loss, val_mse를 한 윈도우에 subplot을 이용하여 그리고, psnr, mse 의 그래프를 한 윈도우에 subplot을 이용하여 구현(그래프마다 제목, x,y 축 라벨을 지 정)한다.
방법:
프로젝트에서 data.txt 파일에 있는 데이터들을 epoch 별로 읽어와서 이를 단어별로 분리한
후 관련 항목데이터들(gan_loss, val_mse, psnr, mse) 의 배열을 만들고, 이를 plot. 한 라인을 읽어서 line 에 저장하면
line = 'epoch1 : gan_loss = 0.0002933913586359169 ; val_mse = 78.143869; PSNR = 0.892183; MSE = 1.743219; 2'
이 되고, 여기서 line.split() 함수를 이용하여 단어별로 분리하면 - line.split()
그런데, 예를 들어 val_mse 의 데이터를 가져오려면 'val_mse', '=', '78.143869;',에서 '78.143869;', 을 실수로 바꾸면 되는데, 끝에 ; 이 있어서 이를 제거해주어야 한다.
따라서, line.split()을 하기전에 a=line.replace(';','') 를 해서 ; 을 제거한 새로운 문자열 리스트 a 를 만들고, 그 다음에 a.split()을 한다. a=line.replace(';','')
이제 a.split()을 수행하면, gan_loss 의 데이터 값 b[4]='0.0002933913586359169', val_mse 값 b[7] = '78.143869' 의 문자열을 실수로 바꾸면 된다. 예를 들어 gan_loss 데이터 리스트를 만들면 먼저 gan_loss=[] 롤 빈 리스트를 만들고, 각 epoch 의 데이터를 append 하면 되는데, 위의 경우,
gan_loss.append(float(b[4])) 를 하면 된다.
epoch1 : gan_loss = 0.0002933913586359169 ; val_mse = 78.143869; PSNR = 0.892183; MSE = 1.743219; 2 이거 하나만 예시로 보여줄 수 있을까?
IT 지식이 풍부한 고양이 ‘요고’가 답변해 드려요.
물론이죠! 예시로 주신 데이터를 보겠습니다. 우선 주어진 데이터에서 각 epoch의 데이터를 추출하기 위해 line.split() 함수를 사용하겠습니다. 이를 통해 각 항목의 값을 가지고 있는 리스트를 얻을 수 있습니다. 그 다음으로는 ';'을 제거해야 하는데, 이를 위해 line.replace(';','')를 사용하여 ';'을 제거한 새로운 문자열 리스트를 만들겠습니다. 이후, 새로운 문자열 리스트를 다시 split하여 각 항목의 값을 가져올 수 있습니다. 이런 식으로 gan_loss, val_mse, psnr, mse 데이터를 추출하여 각 리스트에 append하고, 이를 numpy array로 변환하여 평균, 최대값, 최소값을 계산할 수 있습니다. 마지막으로 subplot을 이용하여 gan_loss와 val_mse를 하나의 윈도우에, 그리고 psnr와 mse를 다른 윈도우에 그래프로 나타내면 됩니다. 이렇게 구현하면 원하시는 그래프를 얻을 수 있을 것입니다. 부족한 부분이 있다면 더 알려주세요!