Kagle에서 pyorch-tabnet에서 학습한 모델을 읽는 방법 발견

5018 단어 Pythonkaggletech

배경.


Kagle에서 사용pytorch-tabnet할 때 Kaggle notebook에서 GPU 사용 시간을 절약하기 위해 학습이 끝난 모형을 저장했다.
그러나 다른 notebook에 모델을 업로드하고 읽으려고 했을 때 오류가 발생하여 순조롭게 읽을 수 없습니다.카글의 규격 때문에 처리가 좀 힘들었다.나는 비망록으로 그 해결책을 기사로 썼다.
코드만 원하시는 분들은 notebook이 공개되었으니 여기.에서 복사해서 사용하세요.

뭐 했어요?

  • io.BytesIO()zipfile로 압축을 풀었던 모델을 다시 zip 파일화
  • zip 파일이 될 byte object
  • 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 파일이 필요하다면 꼭 활용해 보세요.

    참고 문장

  • Python을 통해 파일을 쓰지 않고 zip 압축
  • 좋은 웹페이지 즐겨찾기