Open loverectangle opened 4 years ago
save함수에 들어오는 첫번째 argument는 directory path 입니다. 해당위치에 여러개의 파일들(말씀하시는 모델파일들)을 저장하고 불러오도록 코딩하시면 될것같습니다.
def save(dir_name, *args, **kwargs): os.makedirs(dir_name, exist_ok=True) state = { 'model': model.state_dict(), } torch.save(state, os.path.join(dir_name, 'model.pth')) print('saved')
이 부분이 .pth 인것으로 보아 모델이 pytorch로 구현되어야 하나요 ? 아니면 저 부분을 조금 수정해 h5 형식으로 올려도 되나요?? 함수의 주석 처리 부분에 This function is used for internal process in NSML. Do not change. 라는 말이 있어서 수정을 해도 될지 안될지 잘 모르겠습니다. 수정이 안된다면 무조건 pytorch로 모델을 구현해야 한다는 말인가요 ?
모델이 꼭 pytorch 일 필요는 없습니다.
만약에 h5형식이라면 해당 dir_name의 위치에 h5 파일을 저장하고, load할때도 dir_name에 똑같은 위치가 들어오는데 그위치에 있는 파일을 읽으면 됩니다. (정확히는 load할때 들어오는 dir_name의 위치는 바뀌지만 save 했을때와 같은 구조의 path가 들어옵니다)
This function is used for internal process in NSML. Do not change.
이부분은 수정하겠습니다.
모델, 또는 라이브러리에 따라서 변경이 필요합니다.
우리 팀은 Track 1 모델을 학습할때 두가지 모델을 학습하였습니다.
첫번째 모델은 이미지에서 골격을 추출하는 모델이고 두번째 모델은 추출된 골격을 학습시켜 넘어진 상황인지 아닌지를 판단하는 모델을 구현하였는데
NSML 코드 관련 정보들을 팀에서 내부적으로 이해해 본 결과 NSML에 제출하는 것은 모델 하나의 .Pth 인 것 같은데 저희가 이해한 부분이 맞는지 궁금합니다
저희가 구현 할 때에는 첫번째 모델의 결과 값 ( 추출된 골격좌표 ) 들을 파일에 저장해서 두 번째 모델에 입력으로 넣어주었는데 NSML에 최종 제출해야하는 것이 하나의 .Pth 라면 어떻게 두개를 이어가야하는지 방법을 잘 모르겠습니다
그리고 두 번째 질문은 저희의 두 번째 모델의 최종 출력값이 h5 형식인데 주신 main.py의 bind_nsml에서
def save(dir_name, *args, **kwargs): os.makedirs(dir_name, exist_ok=True) state = { 'model': model.state_dict(), } torch.save(state, os.path.join(dir_name, 'model.pth')) print('saved')
이 부분이 .pth 인것으로 보아 모델이 pytorch로 구현되어야 하나요 ? 아니면 저 부분을 조금 수정해 h5 형식으로 올려도 되나요?? 함수의 주석 처리 부분에 This function is used for internal process in NSML. Do not change. 라는 말이 있어서 수정을 해도 될지 안될지 잘 모르겠습니다. 수정이 안된다면 무조건 pytorch로 모델을 구현해야 한다는 말인가요 ?