Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticinin önceki aşamasında, makine öğrenmesi modelimizi oluşturmak için PyTorch'u kullandık. Ancak bu model bir .pth dosyadır. Windows ML uygulamasıyla tümleştirebilmek için modeli ONNX biçimine dönüştürmeniz gerekir.
Tip
Bu makale, PyTorch veri analizi yoludur. PyTorch görüntü sınıflandırma yolu için bkz. PyTorch eğitim modelinizi ONNX'e dönüştürün.
Modeli dışarı aktarma
Modeli dışarı aktarmak için işlevini kullanacaksınız torch.onnx.export() . Bu işlev modeli yürütür ve çıkışları hesaplamak için kullanılan işleçlerin bir izlemesini kaydeder.
- Aşağıdaki kodu Visual Studio'da
DataClassifier.py, ana işlevinizin üstündeki dosyaya kopyalayın.
#Function to Convert to ONNX
def convert():
# set the model to inference mode
model.eval()
# Let's create a dummy input tensor
dummy_input = torch.randn(1, 3, 32, 32, requires_grad=True)
# Export the model
torch.onnx.export(model, # model being run
dummy_input, # model input (or a tuple for multiple inputs)
"Network.onnx", # where to save the model
export_params=True, # store the trained parameter weights inside the model file
opset_version=11, # the ONNX version to export the model to
do_constant_folding=True, # whether to execute constant folding for optimization
input_names = ['input'], # the model's input names
output_names = ['output'], # the model's output names
dynamic_axes={'input' : {0 : 'batch_size'}, # variable length axes
'output' : {0 : 'batch_size'}})
print(" ")
print('Model has been converted to ONNX')
model.eval() veya model.train(False) öğesini çağırmak, model dışa aktarılmadan önce önemlidir, çünkü bu işlem modeli çıkarım moduna ayarlar. Bu, dropout veya batchnorm gibi operatörlerin çıkarım ve eğitim modunda farklı davranması nedeniyle gereklidir.
- ONNX'e dönüştürmeyi çalıştırmak için ana işlevde dönüştürme işlevine bir çağrı ekleyin. Modeli yeniden eğitmeniz gerekmez, bu nedenle artık çalıştırmamız gerekmeyen bazı işlevleri açıklama satırı yapacağız. Ana işleviniz aşağıdaki gibi olacaktır.
if __name__ == "__main__":
num_epochs = 10
train(num_epochs)
print('Finished Training\n')
test()
test_species()
convert()
- Araç çubuğundaki düğmeyi
Start Debuggingseçerek veya tuşuna basarakF5projeyi yeniden çalıştırın. Modeli yeniden eğitmeye gerek yoktur, mevcut modeli proje klasöründen yüklemeniz yeterlidir.
Proje konumunuza gidin ve .pth modelinin bitişiğinde ONNX modelini bulun.
Uyarı
Daha fazla bilgi edinmek istiyor musunuz? Bir mdoel'i dışarı aktarmaya ilişkin PyTorch öğreticisini gözden geçirin.
Modelinizi keşfedin.
Network.onnxModel dosyasını Neutron ile açın.Model özelliklerini açmak için veri düğümünü seçin.
Gördüğünüz gibi model, giriş olarak 32 bit tensor (çok boyutlu dizi) float nesnesi gerektirir ve çıkış olarak bir Tensor float döndürür. Çıkış dizisi her etiket için olasılığı içerir. Modeli oluşturma şekliniz, etiketler her biri belirli bir iris çiçeği türüyle ilişkili 3 sayı ile temsil edilir.
| Etiket 1 | etiket 2 | Etiket 3 |
|---|---|---|
| 0 | 1 | 2 |
| Iris-setosa | Iris-versicolor | Iris-virginica |
Windows ML uygulamasıyla doğru tahmini göstermek için bu değerleri ayıklamanız gerekir.
Sonraki Adımlar
Modelimiz dağıtıma hazırdır. Ardından, ana olay için bir Windows uygulaması oluşturalım ve bunu Windows cihazınızda yerel olarak çalıştıralım.