- Support ONNX
- Conversion de Formats
- Conversion automatique des types
- Création d'un modèle
- Exécution d'un modèle
- Exécuter dans le Testeur de Stratégie
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Structures de données
Conversion automatique des valeurs d'entrée et de sortie lors de l'exécution de modèles ONNX
La version actuelle d'ONNX dans MQL5 ne prend en charge que les tenseurs pour les valeurs d'entrée/sortie. Les tenseurs sont des tableaux de données avec les éléments des types de données suivants :
Type ONNX |
Correspond au type MQL5 |
---|---|
ONNX_DATA_TYPE_BOOL |
|
ONNX_DATA_TYPE_FLOAT |
|
ONNX_DATA_TYPE_UINT8 |
|
ONNX_DATA_TYPE_INT8 |
|
ONNX_DATA_TYPE_UINT16 |
|
ONNX_DATA_TYPE_INT16 |
|
ONNX_DATA_TYPE_INT32 |
|
ONNX_DATA_TYPE_INT64 |
|
ONNX_DATA_TYPE_FLOAT16 |
|
ONNX_DATA_TYPE_DOUBLE |
|
ONNX_DATA_TYPE_UINT32 |
|
ONNX_DATA_TYPE_UINT64 |
|
ONNX_DATA_TYPE_COMPLEX64 |
|
ONNX_DATA_TYPE_COMPLEX128 |
|
ONNX_DATA_TYPE_BFLOAT16 |
|
ONNX_DATA_TYPE_STRING |
|
Seuls les tableaux, vecteurs et matrices (nous les appellerons Données) peuvent être alimentés dans les modèles ONNX en tant que valeurs d'entrée/sortie.
Si les types de paramètres ne correspondent pas au type de paramètre du modèle ONNX et que OnnxRun est appelé sans le flag ONNX_NO_CONVERSION, la conversion automatique des données sera appliquée. L'autoconversion implique qu'avant d'exécuter un modèle ONNX, les données de l'utilisateur seront copiées dans les tenseurs ONNX avec la conversion appropriée.
Lorsqu'un modèle ONNX est exécuté sans l'autoconversion, le modèle sera calculé à l'aide des Données sans aucune copie supplémentaire.
IMPORTANT ! L'autoconversion ne contrôle pas le débordement (troncature), vous devez donc surveiller attentivement les données et les types de données entrés dans le modèle ONNX.
La conversion automatique prend en charge les types ONNX suivants :
- ONNX_DATA_TYPE_BOOL
- ONNX_DATA_TYPE_FLOAT
- ONNX_DATA_TYPE_UINT8
- ONNX_DATA_TYPE_INT8
- ONNX_DATA_TYPE_UINT16
- ONNX_DATA_TYPE_INT16
- ONNX_DATA_TYPE_INT32
- ONNX_DATA_TYPE_INT64
- ONNX_DATA_TYPE_FLOAT16
- ONNX_DATA_TYPE_DOUBLE
- ONNX_DATA_TYPE_UINT32
- ONNX_DATA_TYPE_UINT64
- ONNX_DATA_TYPE_COMPLEX64
- ONNX_DATA_TYPE_COMPLEX128
Types non supportés :
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
Règles d'Autoconversion par Types de Tensor
Si le type MQL5 n'est pas inclus dans la liste des types pris en charge par le modèle, l'exécution du modèle ONNX renverra l'erreur ERR_ONNX_NOT_SUPPORTED (code d'erreur 5802).
Remarque : lors de la conversion automatique, le type color est traité comme uint, tandis que datetime est traité comme long .
Conversion automatique des valeurs d'entrée
Type ONNX (type d'élément tenseur) |
Type MQL5 pris en charge par la conversion automatique |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Lors de la conversion, les Données sont vérifiées par une simple comparaison avec 0 |
ONNX_DATA_TYPE_FLOAT16 |
float, double |
ONNX_DATA_TYPE_FLOAT |
char, uchar, short, ushort, int, color, uint, datetime, long, ulong, float, double |
ONNX_DATA_TYPE_UINT8 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Autoconversion des valeurs de sortie
Type ONNX (type d'élément tenseur) |
Type MQL5 pris en charge par la conversion automatique |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Si l'élément tenseur est zéro, alors l'élément Data est mis à 0 ; sinon, la valeur est 1 |
ONNX_DATA_TYPE_FLOAT16 |
float, double |
ONNX_DATA_TYPE_FLOAT |
char, uchar, short, ushort, int, color, uint, datetime, long, ulong, float, double |
ONNX_DATA_TYPE_UINT8 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Voir ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Voir également