[210114 TIL] pickle, npy 저장

602go·2021년 1월 14일
0

Deep Learning

목록 보기
4/17
post-thumbnail

Today I Learned

written by 602



실제 프로젝트를 할 때 너무나 유익한 오늘의 TIL
(딥꿀팁에서 따로 다룰 예정이다.)

1. 리스트 pickle 저장

# save
with open('./text2keypoint/tacotron/data/y_data.pickle', 'wb') as f:
    pickle.dump(y_data, f)

# load
with open('./text2keypoint/tacotron/data/y_data.pickle', 'rb') as f:
    y = pickle.load(f)

컨퍼런스를 목전에 두고 모델 학습시킬 때마다 매번 전처리 코드를 실행하는게 시간적 부담이 커서 오늘은 전처리해둔 skels 데이터를 pickle로 저장해두었다. 바로바로 불러들일 수 있어서 확실히 코드 전체 실행 시간이 줄어들었다. 용량은 400~500MB로 큰 편이다.


2. numpy array 저장

# save
np.save("./text2keypoint/tacotron/data/y_train.npy",tr_tmp)
# load
y_train = np.load("./text2keypoint/tacotron/data/y_train.npy")

리스트를 .pickle로 저장하느냐, numpy array로 변환 후 .npy로 저장하느냐의 문제는 선택의 차이다. 다만, 넘파이로 저장할 때 파일 용량이 훨씬 크다(2배 가까이...). 그래서 나는 전처리를 리스트로 했을 경우는 pickle로 저장해두었고, 넘파이를 활용했을 경우는 그대로 .npy 파일로 저장했다.

가끔 np.load에서 pickle 관련 오류가 뜨는 경우가 있는데, 이때 allow_pickle=True를 추가해주면 해결된다.


3. Masking.. Frame padding.. 정답은 어디에..?

이 방법, 저 방법 다 실행하고 있는데, 가장 감질맛 나는 부분은 각 방법의 문제점이 서로 대척점에 있어서 하나를 해결하면 또 다른 하나가 말썽이고.. 번갈아가면서 말썽을 부린다. 내일 중으로 최종 모델을 선정할 예정이다. 밤새 돌아가는 모델은 학습결과가 뷰티풀하길 기대한다.

0개의 댓글