У меня есть две модели:
sklearn.linear_model.Lasso
sklearn.ensemble.GradientBoostingRegressor
, которые я использую для решения той же проблемы. После обучения я сохраняю модели, используя joblib. Идея состоит в том, чтобы опубликовать sh эти постоянные модели, чтобы другие могли их использовать. Однако я просто попытался загрузить выгруженную модель Gradient Boosting на 32-битную Python установку (предварительно обучив ее на 64-битной Python установке) и получил эту ошибку:
File "sklearn\tree\_tree.pyx", line 607, in sklearn.tree._tree.Tree.__cinit__
ValueError: Buffer dtype mismatch, expected 'SIZE_t' but got 'long long'
Документы очень мало подробностей об этой проблеме: https://github.com/scikit-learn/scikit-learn/pull/7899/files
Странно, я не получаю эту ошибку при загрузке модели Лассо. Итак, два вопроса:
1) Как сохранить мою модель, чтобы ее можно было использовать на разных архитектурах?
2) Можно ли сохранить определенные типы алгоритмов sklearn для использования на разных архитектурах а не другие? Если да, как я могу сказать? Этот ответ: Scikits-Learn RandomForrest, обученный на 64-битной python, не открывается на 32-битной python, указывает, что это также относится и к Random Forest, но это не дает понять, на какие другие модели это влияет.
Я понимаю, что эту проблему также можно решить, всегда докеризируя любое приложение, обучающее / загружая модель, но я публикую для образовательных целей, где докеризация все сложно.
Большое спасибо!