О проекте • Запуск проекта • Стек •
В проекте реализована сиамская модель для задач классификации текста. Модель обучена для определения сходства между парами текстовых последовательностей и может использоваться для классификации новых пар последовательностей.
Архитектура
модели состоит из следующих основных компонентов:
- Embedding Layer: Преобразует входные последовательности символов в плотные векторные представления.
- Position Embedding:Добавляет позиционные эмбединги к входным эмбедингам, чтобы зафиксировать порядок следования символов в последовательности.
- Spatial Dropout: Применяет dropout для регуляризации.
- Bidirectional LSTM: Применяет двунаправленный LSTM для получения контекстуальных представлений последовательностей.
- Transformer Encoder Blocks: Применяет несколько блоков Transformer Encoder для дальнейшего преобразования представлений последовательности.
- Abs Diff Layer: Вычисляет абсолютную разницу между представлениями двух последовательностей.
- Fully Connected Layers: Применяет несколько полносвязных слоев для преобразования объединенных представлений в вероятность.
Модель обучается
с помощью следующих шагов:
- Загружаем и предварительно обрабатываем данные: из текстовых файлов загружаются положительные и отрицательные примеры и создается словарь символов.
Important
в качестве примера загружены только файлы для валидации, так как размер файлов для обучения не позволяет выгрузить их
- Определяются гиперпараметры и оптимизатор: определяются такие гиперпараметры, как размер файла, максимальная длина последовательности, размер пакета и количество эпох, создается оптимизатор.
- Обучение модели: выполняется цикл обучения, в ходе которого вычисляется функция потерь и обновляются веса модели.
- Визуализация потерь: для визуализации функции потерь во время обучения.
- Оценка модели на тестовых данных: модель оценивается на тестовых данных.
- Сохранение модели: Обученная модель сохраняется в файл.
Пример использования:
python
import torch
from your_model import SiameseModel
▎Load the saved model
model = SiameseModel(vocab_size, embedding_dim, max_len)
model.load_state_dict(torch.load('model.pth'))
model.to(device)
▎Prepare the input sequences
sequence1 = "This is the first sequence."
sequence2 = "This is the second sequence."
▎Convert the sequences to tensors
input_a = torch.tensor([char_tokenizer(sequence1)], dtype=torch.long, device=device)
input_b = torch.tensor([char_tokenizer(sequence2)], dtype=torch.long, device=device)
▎Forward pass through the model
output = model(input_a, input_b)
probability = torch.sigmoid(output).item()
print(f"Probability of the two sequences being similar: {probability:.4f}")
git clone [email protected]:{name}}/{name}
Запустить docker-compose в папке flask_cognates docker-compose:
docker-compose -f docker-compose-main.yml up -d --build