MQL5: ' Sequence of maps' 유형의 ONNX 모델 출력 전달이 추가되었습니다.
출력 레이어에 맵 시퀀스를 제공하는 ONNX 모델(ONNX_TYPE_MAP의 ONNX_TYPE_SEQUENCE)의 경우 구조의 동적 또는 고정 배열을 출력 매개변수로 전달해야 합니다. 이 구조의 처음 두 필드는 ONNX_TYPE_MAP 키 및 값 유형과 일치해야 하며 고정 또는 동적 배열이어야 합니다.
다음 Python 스크립트에서 생성한 iris.onnx 모델을 살펴보겠습니다:
from sys import argv
data_path=argv[0]
last_index=data_path.rfind("\\")+1
data_path=data_path[0:last_index]
from sklearn.datasets import load_iris
iris_dataset = load_iris()
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
# ONNX 형식으로 변환
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
initial_type = [('float_input', FloatTensorType([None, 4]))]
onx = convert_sklearn(knn, initial_types=initial_type)
path = data_path+"iris.onnx"
with open(path, "wb") as f:
f.write(onx.SerializeToString())
메타에디터에서 생성된 onnx 파일을 엽니다:
맵 시퀀스는 "output_probability"로 전달됩니다. 이 키는 INT64 유형(MQL5에서는 long에 해당)의 키와 float 유형 값을 가집니다. 이 출력에서 데이터를 수신하려면 다음과 같은 구조를 선언합니다:
struct MyMap
{
long key[];
floatvalue[];
};
여기서 우리는 적절한 유형의 동적 배열을 사용했습니다. 이 경우 이 모델의 맵에는 항상 3개의 키+값 쌍이 포함되므로 고정 배열을 사용할 수 있습니다.
맵 시퀀스가 반환되므로 output_probability 출력에서 데이터를 수신하기 위해 이러한 구조의 배열을 매개변수로 전달해야 합니다. 이 배열은 특정 모델의 속성에 따라 동적이거나 고정될 수 있습니다. 예시:
//---출력 레이어 output_probability에서 데이터를 수신할 배열을 선언합니다.
MyMap output_probability[];
...
//--- 모델 실행 중
OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
MetaTrader 5 플랫폼의 업데이트 버전이 2023년 9월 21일 목요일에 출시될 예정입니다. 이번 업데이트에는 플랫폼 수정 및 개선 사항과 관련된 여러가지가 포함되어 있습니다.
MetaTrader 5 클라이언트 터미널 빌드 3980
출력 레이어에 맵 시퀀스를 제공하는 ONNX 모델(ONNX_TYPE_MAP의 ONNX_TYPE_SEQUENCE)의 경우 구조의 동적 또는 고정 배열을 출력 매개변수로 전달해야 합니다. 이 구조의 처음 두 필드는 ONNX_TYPE_MAP 키 및 값 유형과 일치해야 하며 고정 또는 동적 배열이어야 합니다.
다음 Python 스크립트에서 생성한 iris.onnx 모델을 살펴보겠습니다:
메타에디터에서 생성된 onnx 파일을 엽니다:
맵 시퀀스는 "output_probability"로 전달됩니다. 이 키는 INT64 유형(MQL5에서는 long에 해당)의 키와 float 유형 값을 가집니다. 이 출력에서 데이터를 수신하려면 다음과 같은 구조를 선언합니다:
여기서 우리는 적절한 유형의 동적 배열을 사용했습니다. 이 경우 이 모델의 맵에는 항상 3개의 키+값 쌍이 포함되므로 고정 배열을 사용할 수 있습니다.
맵 시퀀스가 반환되므로 output_probability 출력에서 데이터를 수신하기 위해 이러한 구조의 배열을 매개변수로 전달해야 합니다. 이 배열은 특정 모델의 속성에 따라 동적이거나 고정될 수 있습니다. 예시:
MetaTrader 5 웹 터미널 빌드 3980
업데이트는 라이브 업데이트 시스템을 통해서 제공됩니다.