OnnxRun

ONNX modelini çalıştırır.

bool  OnnxRun(
   long    onnx_handle,  // ONNX oturumu tanıtıcısı
   ulong   flags,        // çalışma modunu tanımlayan bayraklar
   ...                   // modelin girdileri ve çıktıları
   );

Parametreler

onnx_handle

[in] OnnxCreate veya OnnxCreateFromBuffer aracılığıyla oluşturulan ONNX oturumu nesnesinin tanıtıcısı.

flags

[in] Çalışma modunu tanımlayan ENUM_ONNX_FLAGS numaralandırmasından bayraklar: ONNX_DEBUG_LOGS ve ONNX_NO_CONVERSION.

...

[in] [out]  Model girdileri ve çıktıları.

Başarılı olursa true, aksi takdirde false geri döndürür. Hata kodunu almak için GetLastError fonksiyonunu çağırın.

ENUM_ONNX_FLAGS

Kimlik

Açıklama

ONNX_LOGLEVEL_VERBOSE

Tüm mesajları günlüğe yazdırır

ONNX_LOGLEVEL_INFO

Bilgi mesajlarını, uyarıları ve hataları günlüğe yazdırır (bu bayrak ONNX_DEBUG_LOGS'un yerini alır)

ONNX_LOGLEVEL_WARNING

Uyarıları ve hataları günlüğe yazdırır (varsayılan)

ONNX_LOGLEVEL_ERROR

Yalnızca hataları günlüğe yazdırır

ONNX_NO_CONVERSION

Otomatik dönüştürmeyi devre dışı bırakır, kullanıcı verilerini olduğu gibi kullanır

ONNX_COMMON_FOLDER  

Common\Files klasöründen model dosyası yükler; değer FILE_COMMON bayrağına eşittir

ONNX_USE_CPU_ONLY

ONNX modelini yalnızca CPU kullanarak yürütür

ONNX_GPU_DEVICE_0

İndeksi 0 olan CUDA cihazı (varsayılan)

ONNX_GPU_DEVICE_1

İndeksi 1 olan CUDA cihazı *

ONNX_GPU_DEVICE_2

İndeksi 2 olan CUDA cihazı *

ONNX_GPU_DEVICE_3

İndeksi 3 olan CUDA cihazı *

ONNX_GPU_DEVICE_4

İndeksi 4 olan CUDA cihazı *

ONNX_GPU_DEVICE_5

İndeksi 5 olan CUDA cihazı *

ONNX_GPU_DEVICE_6

İndeksi 6 olan CUDA cihazı *

ONNX_GPU_DEVICE_7

İndeksi 7 olan CUDA cihazı *

ONNX_ENABLE_PROFILING

ONNX model profillemeyi etkinleştirir

* ONNX_GPU_DEVICE_N biçimindeki bayraklar, iki veya daha fazla CUDA özellikli GPU'ya sahip sistemlerde kullanılmalıdır. Birden fazla GPU seçim bayrağı belirtilirse, en düşük indekse sahip cihaz kullanılır.

Var olmayan bir cihaz indeksi belirtilirse, GPU otomatik olarak seçilecektir.

 

Örnek:

const long                             ExtOutputShape[] = {1,1};    // modelin çıktı şekli
const long                             ExtInputShape [] = {1,10,4}; // modelin girdi şekli
#resource "Python/model.onnx" as uchar ExtModel[]                   // kaynak olarak model
//+------------------------------------------------------------------+
//| Komut dosyası başlatma fonksiyonu                                |
//+------------------------------------------------------------------+
int OnStart(void)
  {
   matrix rates;
//--- 10 çubuk al
   if(!rates.CopyRates("EURUSD",PERIOD_H1,COPY_RATES_OHLC,2,10))
      return(-1);
//--- girdi olarak OHLC vektörü kümesi kullan
   matrix x_norm=rates.Transpose();
   vector m=x_norm.Mean(0);               
   vector s=x_norm.Std(0);
   matrix mm(10,4);
   matrix ms(10,4);
//--- normalleştirme matrislerini doldur
   for(int i=0i<10i++)
     {
      mm.Row(m,i);
      ms.Row(s,i);
     }
//--- girdi verilerini normalleştir
   x_norm-=mm;
   x_norm/=ms;
//--- modeli oluştur
   long handle=OnnxCreateFromBuffer(ExtModel,ONNX_DEBUG_LOGS);
//--- girdi verilerinin şeklini belirt
   if(!OnnxSetInputShape(handle,0,ExtInputShape))
     {
      Print("OnnxSetInputShape failed, error ",GetLastError());
      OnnxRelease(handle);
      return(-1);
     }
//--- çıktı verilerinin şeklini belirt
   if(!OnnxSetOutputShape(handle,0,ExtOutputShape))
     {
      Print("OnnxSetOutputShape failed, error ",GetLastError());
      OnnxRelease(handle);
      return(-1);
     }
//--- normalleştirilmiş girdi verilerini float türüne dönüştür
   matrixf x_normf;
   x_normf.Assign(x_norm);
//--- modelin çıktı verilerini (yani fiyat öngörüsünü) buradan al
   vectorf y_norm(1);
//--- modeli çalıştır
   if(!OnnxRun(handle,ONNX_DEBUG_LOGS | ONNX_NO_CONVERSION,x_normf,y_norm))
     {
      Print("OnnxRun failed, error ",GetLastError());
      OnnxRelease(handle);
      return(-1);
     }
//--- modelin çıktı değerini günlüğe yazdır
   Print(y_norm);
//--- öngörülen fiyatı elde etmek için ters dönüşümü yap
   double y_pred=y_norm[0]*s[3]+m[3];
   Print("price predicted:",y_pred);
//--- çalışmayı tamamla
   OnnxRelease(handle);
   return(0);
  };

Ayrıca bakınız

OnnxSetInputShape, OnnxSetOutputShape