Discussione sull’articolo "Modelli di regressione della libreria Scikit-learn e la loro esportazione in ONNX"

 

Il nuovo articolo Modelli di regressione della libreria Scikit-learn e la loro esportazione in ONNX è stato pubblicato:

In questo articolo esploreremo l'applicazione dei modelli di regressione del pacchetto Scikit-learn, cercheremo di convertirli nel formato ONNX e utilizzeremo i modelli risultanti all’interno di programmi MQL5. Inoltre, confronteremo l'accuratezza dei modelli originali con le loro versioni ONNX sia per la precisione float che per la double. Inoltre, esamineremo la rappresentazione ONNX dei modelli di regressione, con l'obiettivo di fornire una migliore comprensione della loro struttura interna e dei principi operativi.

Scikit-learn è una delle librerie per l'apprendimento automatico più popolare e utilizzata dalla comunità Python. Offre un'ampia gamma di algoritmi, un'interfaccia facile da usare e una buona documentazione. L'articolo precedente, "Modelli di Classificazione della Libreria Scikit-learn e Loro Esportazione in ONNX", copriva i modelli di classificazione.

In questo articolo esploreremo l'applicazione dei modelli di regressione nel pacchetto Scikit-learn, calcoleremo i loro parametri con doppia precisione per il set di dati di prova, proveremo a convertirli nel formato ONNX con precisione double e float e utilizzeremo i modelli ottenuti in programmi MQL5. Inoltre, confronteremo l'accuratezza dei modelli originali e delle loro versioni ONNX per la precisione float e double. Inoltre, esamineremo la rappresentazione ONNX dei modelli di regressione, che ci forniranno una migliore comprensione della loro struttura interna e il loro funzionamento.

Autore: MetaQuotes

[Eliminato]  

Quale potrebbe essere l'errore, log:

2025.07.03 13:41:23.699 Core 1  2025.06.27 22:00:00   ONNX: Non-zero status code returned while running TreeEnsembleRegressor node. Name:'' Status Message: E:\workspace\external\onnx\onnx-runtime\src\core\framework\execution_frame.cc:173 onnxruntime::IExecutionFrame::GetOrCreateNodeOutputMLValue shape && tensor.Shape() == *shape was false. OrtValue shape verification failed. Current shape:{1} Requested shape:{1,1}

2025.07.03 13:41:23.699 Core 1  2025.06.27 22:00:00   ONNX: execute OnnxRun failed (OrtStatus: 6 'Non-zero status code returned while running TreeEnsembleRegressor node. Name:'' Messaggio di stato: E:\workspace\external\onnx\onnx\onnx-runtime\src\core\framework\execution_frame.cc:173 onnxruntime::IExecutionFrame::GetOrCreateNodeOutputMLValue shape && tensor.S...'...'), inspect code 'ôU! fìV' (130:4)

Modello regressore Catboost:

const ulong output_shape[] = {1};
   if(!OnnxSetOutputShape(ExtHandle, 0, output_shape)) // Ошибки нет!
     {
      Print("OnnxSetOutputShape 2 error ", GetLastError());
      return(INIT_FAILED);
     }
vectorf out2(1);
   
OnnxRun(ExtHandle, ONNX_DEFAULT, f, out2); // Возникают вышеприведенные ошибки

Per quanto ho capito, sta imprecando contro la forma del tensore di uscita (array). Ma è impostato correttamente.