


Rekod praktikal beberapa masalah dalam menyimpan dan memuatkan model pytorch
Artikel ini membawakan anda pengetahuan yang berkaitan tentang Python terutamanya memperkenalkan rekod praktikal tentang beberapa masalah dalam menyimpan dan memuatkan model pytorch. Saya harap ia dapat membantu semua orang. membantu.
[Cadangan berkaitan: Tutorial video Python3 ]
1. Cara menyimpan dan memuatkan model dalam obor
1. Simpan dan muatkan parameter model dan struktur model
torch.save(model,path) torch.load(path)
2. Hanya simpan dan muatkan parameter model - kaedah ini lebih selamat, tetapi lebih menyusahkan
torch.save(model.state_dict(),path) model_state_dic = torch.load(path) model.load_state_dic(model_state_dic)
2. Masalah dalam menyimpan dan memuatkan model dalam obor
1 Masalah dalam memuatkan struktur dan parameter model selepas menyimpannya dalam model kad tunggal
Struktur model akan ditakrifkan apabila model disimpan. laluan fail direkodkan, dan apabila memuatkan, ia akan dihuraikan mengikut laluan dan parameter akan dimuatkan selepas laluan fail definisi model diubah suai, ralat akan dilaporkan apabila menggunakan torch.load(path).
Selepas menukar folder model kepada model, ralat akan dilaporkan apabila memuatkan semula.
import torch from model.TextRNN import TextRNN load_model = torch.load('experiment_model_save/textRNN.bin') print('load_model',load_model)
Dengan cara ini untuk menyimpan struktur dan parameter model lengkap, pastikan anda tidak menukar laluan fail definisi model .
2. Selepas menyimpan model latihan kad tunggal pada mesin berbilang kad, ralat akan dilaporkan semasa memuatkannya pada mesin kad tunggal
Bermula dari 0 pada berbilang -mesin kad dengan berbilang kad grafik, model kini n>= Selepas menyimpan latihan kad grafik pada 1 dan memuatkan salinan pada mesin kad tunggal
import torch from model.TextRNN import TextRNN load_model = torch.load('experiment_model_save/textRNN_cuda_1.bin') print('load_model',load_model)
akan ada masalah ketidakpadanan peranti cuda - segmen kod modul yang anda simpan adalah kecil Jenis komponen menggunakan cuda1, jadi apabila ia dibuka menggunakan torch.load(), ia akan mencari cuda1 secara lalai, dan kemudian memuatkan model. kepada peranti. Pada masa ini, anda boleh terus menggunakan map_location untuk menyelesaikan masalah dan memuatkan model ke CPU.
load_model = torch.load('experiment_model_save/textRNN_cuda_1.bin',map_location=torch.device('cpu'))
3 Masalah yang berlaku selepas menyimpan struktur model dan parameter model latihan berbilang GPU dan kemudian memuatkannya
Apabila menggunakan berbilang GPU untuk melatih model pada masa yang sama. , sama ada struktur model dan parameter disimpan bersama atau Masalah akan berlaku jika anda menyimpan parameter model secara berasingan dan kemudian memuatkannya di bawah satu kad
a Simpan struktur model dan parameter bersama-sama dan kemudian memuatkan model
torch.distributed.init_process_group(backend='nccl')
Kaedah berbilang proses di atas digunakan semasa latihan, jadi anda mesti mengisytiharkannya semasa memuatkan, jika tidak ralat akan dilaporkan.
b. Menyimpan parameter model secara berasingan
model = Transformer(num_encoder_layers=6,num_decoder_layers=6) state_dict = torch.load('train_model/clip/experiment.pt') model.load_state_dict(state_dict)
juga akan menyebabkan masalah, tetapi masalahnya di sini ialah kunci kamus parameter berbeza daripada kunci yang ditakrifkan oleh model
Sebabnya di bawah latihan multi-GPU, apabila menggunakan latihan yang diedarkan, model tersebut akan dibungkus seperti berikut:
model = torch.load('train_model/clip/Vtransformers_bert_6_layers_encoder_clip.bin') print(model) model.cuda(args.local_rank) 。。。。。。 model = nn.parallel.DistributedDataParallel(model,device_ids=[args.local_rank],find_unused_parameters=True) print('model',model)
Struktur model sebelum pembungkusan:
Model berpakej
mempunyai DistributedDataParallel dan modul di lapisan luar, jadi berat model adalah dimuatkan dalam persekitaran kad tunggal Apabila kekunci berat tidak konsisten.
3. Kaedah menyimpan dan memuatkan model yang betul
if gpu_count > 1: torch.save(model.module.state_dict(),save_path) else: torch.save(model.state_dict(),save_path) model = Transformer(num_encoder_layers=6,num_decoder_layers=6) state_dict = torch.load(save_path) model.load_state_dict(state_dict)
Ini adalah paradigma yang lebih baik, dan tidak akan ada ralat dalam memuatkan.
[Cadangan berkaitan: Tutorial video Python3]
Atas ialah kandungan terperinci Rekod praktikal beberapa masalah dalam menyimpan dan memuatkan model pytorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

Untuk menjalankan kod python dalam teks luhur, anda perlu memasang plug-in python terlebih dahulu, kemudian buat fail .py dan tulis kod itu, dan akhirnya tekan Ctrl B untuk menjalankan kod, dan output akan dipaparkan dalam konsol.

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

Kod penulisan dalam Kod Visual Studio (VSCode) adalah mudah dan mudah digunakan. Hanya pasang VSCode, buat projek, pilih bahasa, buat fail, tulis kod, simpan dan jalankannya. Kelebihan vscode termasuk sumber lintas platform, bebas dan terbuka, ciri-ciri yang kuat, sambungan yang kaya, dan ringan dan cepat.

Running Python Code di Notepad memerlukan Python Executable dan NPPExec plug-in untuk dipasang. Selepas memasang Python dan menambahkan laluannya, konfigurasikan perintah "python" dan parameter "{current_directory} {file_name}" dalam plug-in nppexec untuk menjalankan kod python melalui kunci pintasan "f6" dalam notepad.
