Этот проект предоставляет утилиты для анализа и оптимизации нейросетей, предназначенных для анализа тональности текстов (на примере набора данных IMDB). Основной файл optimize_model.py позволяет анализировать характеристики моделей в форматах .pth и .onnx, а также квантизовать их с использованием различных методов.
├── my_model/
│ └── IMDB Dataset.csv # Пример набора данных
├── src/
│ ├── data.py # Загрузка и предобработка данных IMDB
│ ├── model.py # Определение модели SentimentNet
│ └── train.py # Обучение модели SentimentNet
├── main.py # Пример обучения и предсказания
├── convert_to_onnx.py # Конвертация модели .pth в .onnx
├── convert_to_pth.py # Конвертация модели .onnx в .pth
├── optimize_model.py # Анализ и квантизация моделей
├── predict.py # Предсказание с использованием модели .pth
├── predict_with_onnx.py # Предсказание с использованием модели .onnx
├── requirements.txt # Зависимости проекта
└── README.md
-
src/data.py:
Содержит классIMDBDatasetи функции для загрузки данных из CSV-файла, их векторизации с помощьюTfidfVectorizerи созданияDataLoaderдля обучения и тестирования. -
src/model.py:
Определяет классSentimentNet— простую нейросеть для анализа тональности с двумя линейными слоями. -
src/train.py:
Реализует обучение моделиSentimentNetна данных IMDB и сохранение обученной модели в файл.pth. -
optimize_model.py:
Основной скрипт для анализа и квантизации моделей. Поддерживает:- Анализ характеристик моделей
.pthи.onnx(веса, размеры, типы данных). - Квантизацию
.pthметодамиdynamic,static,qat. - Квантизацию
.onnxметодамиdynamic,static.
- Анализ характеристик моделей
-
predict.py:
Скрипт для предсказания тональности текста с использованием модели.pth. -
convert_to_onnx.py:
Конвертирует модель.pthв формат.onnx. -
convert_to_pth.py:
Конвертирует модель.onnxв формат.pth. -
predict_onnx.py:
Скрипт для предсказания тональности текста с использованием модели.onnx. -
requirements.txt:
Содержит список зависимостей проекта. -
main.py:
Пример использования: обучение модели и предсказание. -
my_model/IMDB Dataset.csv:
Ожидаемый файл с данными (не включен). Должен содержать колонкиreview(текст отзыва) иsentiment(метка:positiveилиnegative).
- Установите зависимости:
pip install -r requirements.txt
Используйте main.py для обучения модели::
python main.py- Обучает модель и сохраняет ее в
my_model/sentiment_model.pth.
Используйте optimize_model.py для анализа характеристик модели:
python optimize_model.py- Пример ввода:
Введите тип модели (pth или onnx): pth Введите путь к модели: sentiment_model.pth Выберите действие (анализ или квантизация): анализ
Используйте optimize_model.py для квантизации:
-
Для
.pth:Введите тип модели (pth или onnx): pth Введите путь к модели: my_model/sentiment_model.pth Выберите действие (анализ или квантизация): квантизация Введите размерность входных данных (например, 5000): 5000 Выберите метод квантизации (dynamic, static, qat): dynamic Введите путь для сохранения квантизованной модели: my_model/quant_model.pth -
Для
.onnx:Введите тип модели (pth или onnx): onnx Введите путь к модели: sentiment_model.onnx Выберите действие (анализ или квантизация): квантизация Выберите метод квантизации (dynamic, static): static Введите путь для сохранения квантизованной модели: quant_model_with_static.onnx
-
Для
.pthиспользуйтеpredict.py:python predict.py
-
Для
.onnxиспользуйтеpredict_onnx.py:python predict_onnx.py
-
Конвертация
.pthв.onnx:python convert_to_onnx.py
-
Конвертация
.onnxв.pth:python convert_to_pth.py
Примечания
- QAT для .pth: Требует обучающих данных и переобучения. Убедитесь, что IMDB Dataset.csv доступен.
- Ошибки: Если модель уже квантизована, скрипт сообщит об этом и выведет ее характеристики.
- Static для .onnx: Требует калибровочных данных. Имя входа модели должно быть 'input', иначе настройте ONNXCalibrationDataReader.