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.
Uyarı
Daha fazla işlevsellik için PyTorch, Windows üzerinde DirectML ile de kullanılabilir.
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.
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
PyTorchTraining.py, ana işlevinizin üstündeki dosyaya kopyalayın.
import torch.onnx
#Function to Convert to ONNX
def Convert_ONNX():
# set the model to inference mode
model.eval()
# Let's create a dummy input tensor
dummy_input = torch.randn(1, input_size, requires_grad=True)
# Export the model
torch.onnx.export(model, # model being run
dummy_input, # model input (or a tuple for multiple inputs)
"ImageClassifier.onnx", # where to save the model
export_params=True, # store the trained parameter weights inside the model file
opset_version=10, # the ONNX version to export the model to
do_constant_folding=True, # whether to execute constant folding for optimization
input_names = ['modelInput'], # the model's input names
output_names = ['modelOutput'], # the model's output names
dynamic_axes={'modelInput' : {0 : 'batch_size'}, # variable length axes
'modelOutput' : {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__":
# Let's build our model
#train(5)
#print('Finished Training')
# Test which classes performed well
#testAccuracy()
# Let's load the model we just created and test the accuracy per label
model = Network()
path = "myFirstModel.pth"
model.load_state_dict(torch.load(path))
# Test with batch of images
#testBatch()
# Test how the classes performed
#testClassess()
# Conversion to ONNX
Convert_ONNX()
- 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.
Çıkış aşağıdaki gibi olacaktır.
Proje konumunuza gidin ve .pth modelinin bitişiğinde ONNX modelini bulun.
Uyarı
Daha fazla bilgi edinmek istiyor musunuz? Modeli dışarı aktarmaya ilişkin PyTorch öğreticisini gözden geçirin.
Modelinizi keşfedin.
ImageClassifier.onnxModel dosyasını Netron 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 10 sayı ile gösterilir ve her sayı on nesne sınıfını temsil eder.
| Etiket 0 | Etiket 1 | Etiket 2 | Etiket 3 | Etiket 4 | Etiket 5 | Etiket 6 | Etiket 7 | Etiket 8 | Etiket 9 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| uçak | araba | kuş | kedi | geyik | köpek | kurbağa | at | gemi | kamyon |
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.