Microsoft ML.Net не будет сохранять модель на диск

#ml.net

Вопрос:

Я написал приложение на C#, которое должно запускаться как библиотека другим приложением. Родительское приложение (для которого у меня есть API, но нет источника), как я полагаю, использует маршалинг для передачи данных между запущенным приложением и обратно в мою библиотеку под его доменом приложений.

Дело в том, что он должен быть запущен таким образом, чтобы я мог получить данные, которые мне нужны, а затем передать в ML.Net для выполнения регрессий и передачи обратно в приложение. В общем, у меня нет с этим проблем.

Мое решение состояло в том, чтобы использовать Ильмерге, но это нарушило ML.Net, слишком много зависимостей и невозможность объединить их все. В качестве альтернативы я использовал Коди.Costura и указали конкретные времени выполнения (в данном случае x64) и смогли правильно объединить множество библиотек, необходимых для ML.Net и заставьте библиотеку DLL запускаться под родительским приложением.

ML.Net удивительно, но это работает, и я могу делать то, что мне нужно. Проблема сейчас в том, что мне нужно сохранить обученную модель.

Если я установлю ML.Net CacheDirectoryName для настроек эксперимента ML.Net.Auto создаст папку при запуске и заполнит ее всеми сохраненными моделями, но их размер равен 0 байтам, и это создает исключение. Если я НЕ укажу это (установлю значение null, принудительное хранение в памяти), все будет работать нормально, но я все равно не смогу сохранить модель позже.

Если я попытаюсь использовать mlContext.Model.Сохранить(модель, схема, имя файла) выдает следующую ошибку:

Система.Исключение аргумента: Путь не имеет юридической формы. в System.IO.Path.NewNormalizePath…

Сводится к Microsoft.ML.RepositoryWriter.Создать заново(…

Я видел другие потоки, указывающие, что ему передается пустая строка, однако, как уже отмечалось, он создаст файл размером 0 байт на диске, как указано. Я полагаю, что здесь происходит что-то еще, связанное с тем, что это приложение запускается как DLL.

Любое понимание ценится, я перепробовал почти все и не могу сдвинуть его с места.

Спасибо