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_DEBUG_LOGS

Hata ayıklama günlüklerini 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

 

Ö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