Kagle에서 pyorch-tabnet에서 학습한 모델을 읽는 방법 발견
배경.
Kagle에서 사용
pytorch-tabnet
할 때 Kaggle notebook에서 GPU 사용 시간을 절약하기 위해 학습이 끝난 모형을 저장했다.그러나 다른 notebook에 모델을 업로드하고 읽으려고 했을 때 오류가 발생하여 순조롭게 읽을 수 없습니다.카글의 규격 때문에 처리가 좀 힘들었다.나는 비망록으로 그 해결책을 기사로 썼다.
코드만 원하시는 분들은 notebook이 공개되었으니 여기.에서 복사해서 사용하세요.
뭐 했어요?
io.BytesIO()
와 zipfile
로 압축을 풀었던 모델을 다시 zip 파일화clf.load_model()
로 읽기상세히 설명하다
먼저
pytorch-tabnet
의 모델 출력에 대한 설명을 설명한 후 Kaggle의 규격 모델에 따라 읽는 것이 순조롭지 못했다.이후 코드에 대한 해설을 진행한다.모델 출력
pytoch-tabnetREADME의 방법으로 모델을 저장하면 초파라미터와 모델의 무게는 zip 파일로 출력됩니다.
모형을 읽을 때 저장된 zip 파일의 파일 이름
.zip
을 지정하고 쓰지 않습니다!학습된 모델을 읽을 수 있습니다.다음 참조 코드.# save tabnet model
saving_path_name = "./tabnet_model_test_1"
saved_filepath = clf.save_model(saving_path_name)
# define new model with basic parameters and load state dict weights
loaded_clf = TabNetClassifier()
loaded_clf.load_model(saved_filepath)
Kagle의 사양
Kagle에서 사용할 파일을 input 폴더에 업로드합니다.
여기서 학습이 끝난 모형의 zip 파일을 올리면 파일이 자동으로 해동됩니다
아래 참조Kaggle Staff의 주석
ZIP archives are automatically accessible in Kaggle Kernels so you can just access your files as if they were already unzipped.
어쨌든 Kaggle의 방법으로 zip 파일을 올리면 마음대로 해동된 것 같습니다.
데이터 집합은 편리하지만 이번처럼 zip 파일이 아니면 읽지 못하는 상황이 골치 아프다.
또한
input
폴더는read-only이기 때문에 압축을 풀은 폴더도 zip을 더 이상 압축할 수 없습니다.해결책
폴더에 쓸 수 없습니다. 따라서 파일에 쓰지 않고 zip 압축하는 방법을 사용합니다.전체 공개된 노트북을 보세요.요점만 적으세요.
tabnet_zip = io.BytesIO()
with zipfile.ZipFile(tabnet_zip, 'w') as z:
z.write('../input/tabnet/model_params.json', arcname='model_params.json')
z.write('../input/tabnet/network.pt', arcname='network.pt')
점으로 io 흐름을 이용하여byte object에 zip 압축된 파일을 출력합니다.이로써read-only의 제약을 피하고 zip 파일을 만들 수 있다.매개변수
arcname
는 지정된 이름으로 zip 파일에 기록됩니다.생략하면 이름이 첫 번째 파라미터와 같습니다. 그러면 pytorch-tabnet
구상된 폴더로 구성되기 때문에 모델을 읽을 때 오류가 발생합니다.파일 이름만 변경하십시오.생성된 흐름은 다음과 같이 불러옵니다
clf = TabNetClassifier()
clf.load_model(tabnet_zip)
끝맺다
이번에도 Kagle notebook의 방법이 있어 상당히 힘껏 해결했다.이번 경우를 제외하고 Zip 파일이 필요하다면 꼭 활용해 보세요.
참고 문장
Reference
이 문제에 관하여(Kagle에서 pyorch-tabnet에서 학습한 모델을 읽는 방법 발견), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mitsu_h/articles/kaggle_zip_iobytes텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)