Где разместить предварительно подготовленные модели машинного обучения в пакете Python для удобства доступа

#python #machine-learning #flask

#python #машинное обучение #flask

Вопрос:

Я писал персональный пакет Python для целей машинного обучения. Некоторые модули в пакете используют предварительно подготовленную модель. У меня возникают проблемы с доступом к этой предварительно подготовленной модели при попытке использовать пакет в приложении flask. Каталог, в котором я работаю, организован следующим образом:

 -- root
  -- flaskapp          #folder for my flask app
    -- app
      -- templates
        -- index.html
      -- __init__.py
      -- routes.py
    -- flaskapp.py
  -- pipeline          #folder for my python package 
    -- __init__.py
    -- sentiment
      -- __init__.py
      -- logistic.py
  -- models            #folder for my pretrained models
    -- pretrained_model.joblib
  

Здесь папка sentiment содержит файл python, который загружает сериализованную модель. Чтобы использовать его в routes.py моем приложении flask, я бы сделал:

 from pipeline.sentiment.logistic import sentiment_model
  

где sentiment_model.py затем содержатся следующие строки:

 import joblib
model = joblib.load('models/pretrained_model.joblib')
  

В настоящее время, чтобы использовать мой pipeline пакет в приложении flask, я пытаюсь добавить пакет к своему пути в routes.py файле моего приложения flask. При использовании пакета в других файлах Python я могу получить доступ к папке models, только если она находится в root каталоге, в котором я работаю, как указано в структуре моих папок выше. Если я помещаю models папку внутри sentiment папки, я получаю следующую ошибку:

 FileNotFoundError: [Errno 2] No such file or directory: 'models/pretrained_model.joblib'
  

Я предполагаю, что получаю эту ошибку, потому что моя models папка не находится в корневом каталоге, но это кажется неправильным, поскольку в идеале я хотел бы иметь возможность связывать пакет с предварительно подготовленной моделью. Куда я могу поместить models папку в пакете и какие изменения мне нужно внести в структуру моего пакета, чтобы я мог получить доступ к папке models при импорте пакета в другой файл? Должен ли я сделать что-то вроде размещения __init__.py файла внутри моей models папки?

Комментарии:

1. всегда размещайте их рядом с вашим файлом Python, который запускает модель, в том же каталоге, в противном случае, если вы сохраняете их в другой папке того же каталога, вы получаете сообщение об ошибке, потому что папка models не находится внутри вашей логистической папки, из которой вы ее вызываете .. это беспорядок

2. Спасибо за вашу помощь. Я поместил models папку в папку logistic. Затем, чтобы получить к нему доступ из моего каталога flask, я использовал sys для добавления корневого каталога к моему пути. Я все еще получаю ошибку file not found при попытке использовать эту модель в своих маршрутах. хотя py.