- ONNX Desteği
- Model Dönüştürme
- Otomatik Veri Türü Dönüştürme
- Model Oluşturma
- Model Çalıştırma
- Strateji Sınayıcıda Çalıştırma
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Veri Yapıları
Veri Yapıları
ONNX modelleriyle çalışmak için aşağıdaki veri yapıları kullanılır:
OnnxTypeInfo #
Yapı, ONNX modelinin girdi veya çıktı parametresinin türünü tanımlar.
struct OnnxTypeInfo
|
Girdi olarak yalnızca tensör (ONNX_TYPE_TENSOR) kullanılabilir. Bu durumda, yalnızca OnnxTypeInfo::tensor alanı değerlerle doldurulur, diğer alanlar (harita ve sekans) tanımlanmaz.
Üç OnnxTypeInfo türünden (ONNX_TYPE_TENSOR, ONNX_TYPE_MAP veya ONNX_TYPE_SEQUENCE) yalnızca biri girdi olarak kullanılabilir. Türe bağlı olarak ilgili altyapı (OnnxTypeInfo::tensor, OnnxTypeInfo::map veya OnnxTypeInfo::sequence) doldurulur.
Yapı, ONNX modelinin girdi veya çıktı parametresindeki tensörü tanımlar.
struct OnnxTensorTypeInfo
|
OnnxMapTypeInfo #
Yapı, ONNX modelinin çıktı parametresinde elde edilen haritayı tanımlar.
struct OnnxMapTypeInfo
|
OnnxSequenceTypeInfo #
Yapı, ONNX modelinin çıktı parametresinde elde edilen sekansı tanımlar.
struct OnnxSequenceTypeInfo
|
ENUM_ONNX_TYPE #
ENUM_ONNX_TYPE numaralandırması, model parametresinin türünü tanımlar.
Kimlik |
Açıklama |
---|---|
ONNX_TYPE_UNKNOWN |
Bilinmeyen |
ONNX_TYPE_TENSOR |
Tensör |
ONNX_TYPE_SEQUENCE |
Sekans |
ONNX_TYPE_MAP |
Harita |
ONNX_TYPE_OPAQUE |
Soyut (opak) |
ONNX_TYPE_SPARSETENSOR |
Seyrek tensör |
ENUM_ONNX_DATA_TYPE #
ENUM_ONNX_DATA_TYPE numaralandırması, kullanılan veri türünü tanımlar.
Kimlik |
Açıklama |
---|---|
ONNX_DATA_TYPE_UNDEFINED |
Tanımsız |
ONNX_DATA_TYPE_FLOAT |
float |
ONNX_DATA_TYPE_INT8 |
8-bit int |
ONNX_DATA_TYPE_UINT16 |
16-bit uint |
ONNX_DATA_TYPE_INT16 |
16-bit int |
ONNX_DATA_TYPE_INT32 |
32-bit int |
ONNX_DATA_TYPE_INT64 |
64-bit int |
ONNX_DATA_TYPE_STRING |
string |
ONNX_DATA_TYPE_BOOL |
bool |
ONNX_DATA_TYPE_FLOAT16 |
16-bit float |
ONNX_DATA_TYPE_DOUBLE |
double |
ONNX_DATA_TYPE_UINT32 |
32-bit uint |
ONNX_DATA_TYPE_UINT64 |
64-bit uint |
ONNX_DATA_TYPE_COMPLEX64 |
64-bit complex |
ONNX_DATA_TYPE_COMPLEX128 |
128-bit complex |
ONNX_DATA_TYPE_BFLOAT16 |
16-bit bfloat (Brain Floating Point) |
ENUM_ONNX_FLAGS #
ENUM_ONNX_FLAGS numaralandırması, modelin çalışma modunu tanımlar.
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 |
ONNX modelleriyle çalışırken dizi dönüştürme
Makine öğrenimi görevleri her zaman daha yüksek hesaplama doğruluğu gerektirmez. Hesaplamaları hızlandırmak için bazı modeller Float16 ve hatta Float8 gibi daha düşük hassasiyetli veri türleri kullanır. Kullanıcıların ilgili verileri modellere girebilmelerini sağlamak için MQL5, standart MQL5 türlerini özel FP16 ve FP8 türlerine dönüştüren dört özel fonksiyon sağlar.
Fonksiyon |
Eylem |
---|---|
float veya double türündeki bir diziyi istenilen formatta ushort türünde bir diziye kopyalar |
|
float veya double türündeki bir diziyi istenilen formatta uchar türünde bir diziye kopyalar |
|
ushort türündeki bir diziyi istenilen formatta float veya double türünde bir diziye kopyalar |
|
uchar türündeki bir diziyi istenilen formatta float veya double türünde bir diziye kopyalar |
Bu dizi dönüştürme fonksiyonları aşağıdaki numaralandırmalarda belirtilen özel formatları kullanır.
ENUM_FLOAT16_FORMAT #
ENUM_FLOAT16_FORMAT numaralandırması iki FP16 format türü tanımlar.
Kimlik |
Açıklama |
---|---|
FLOAT_FP16 |
Half olarak da bilinen standart 16 bit format |
FLOAT_BFP16 |
Özel brain float point formatı |
Bu formatların her birinin avantajları ve sınırlamaları vardır. FLOAT16 daha yüksek doğruluk sağlar ancak daha fazla depolama ve hesaplama kaynağı gerektirir. BFLOAT16 ise veri işlemede daha yüksek performans ve verimlilik sağlar, ancak daha az doğruluk sergileyebilir.
ENUM_FLOAT8_FORMAT #
ENUM_FLOAT8_FORMAT numaralandırması dört FP8 format türü tanımlar.
FP8 (8-bit floating point), ondalıklı sayıları temsil etmek için kullanılan veri türlerinden biridir. FP8'de her sayı 8 veri biti ile temsil edilir ve tipik olarak üç bileşene ayrılır: işaret, üs ve mantis. Bu format, doğruluk ve depolama verimliliği arasında bir denge sunarak bellek ve hesaplama verimliliği gerektiren uygulamalar için ideal hale gelir.
Kimlik |
Açıklama |
---|---|
FLOAT_FP8_E4M3FN |
8 bit ondalıklı sayı, üs için 4 bit ve mantis için 3 bit. Genellikle katsayı olarak kullanılır. |
FLOAT_FP8_E4M3FNUZ |
8 bit ondalıklı sayı, üs için 4 bit ve mantis için 3 bit. NaN'ı destekler, negatif sıfır ve Inf'i desteklemez. Genellikle katsayı olarak kullanılır. |
FLOAT_FP8_E5M2FN |
8 bit ondalıklı sayı, üs için 5 bit ve mantis için 2 bit. NaN ve Inf'i destekler. Genellikle gradyanlar için kullanılır. |
FLOAT_FP8_E5M2FNUZ |
8 bit ondalıklı sayı, üs için 5 bit ve mantis için 2 bit. NaN'ı destekler, negatif sıfır ve Inf'i desteklemez. Genellikle gradyanlar için kullanılır. |
FP8'in en önemli avantajlarından biri, büyük veri kümelerini işlemedeki verimliliğidir. FP8, kompakt sayı temsili kullanarak bellek gereksinimlerini azaltır ve hesaplamaları hızlandırır. Bu, özellikle genellikle büyük veri kümelerini işleyen makine öğrenimi ve yapay zeka uygulamalarında önemlidir.