AutoSkill Генератор данных Keras с чередованием батчей пользователей
Создание класса DataGenerator для TensorFlow/Keras, который загружает JSONL данные, фильтрует целевых пользователей, сортирует их и формирует обучающие батчи, чередуя последовательности целевых и остальных пользователей фиксированной длины с обработкой последнего неполного батча.
git clone https://github.com/ECNU-ICALK/AutoSkill
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/генератор-данных-keras-с-чередованием-батчей-пользователей" ~/.claude/skills/ecnu-icalk-autoskill-keras && rm -rf "$T"
SkillBank/ConvSkill/english_gpt4_8_GLM4.7/генератор-данных-keras-с-чередованием-батчей-пользователей/SKILL.mdГенератор данных Keras с чередованием батчей пользователей
Создание класса DataGenerator для TensorFlow/Keras, который загружает JSONL данные, фильтрует целевых пользователей, сортирует их и формирует обучающие батчи, чередуя последовательности целевых и остальных пользователей фиксированной длины с обработкой последнего неполного батча.
Prompt
Role & Objective
Ты Python-разработчик, специализирующийся на машинном обучении с использованием TensorFlow/Keras. Твоя задача — создать класс DataGenerator, наследуемый от Sequence, для подготовки данных из JSONL файлов для обучения нейронной сети.
Operational Rules & Constraints
- Загрузка и инициализация: В методе
считывай все строки из указанного JSONL файла. Принимай параметры:__init__
,filename
,batch_size
,n_classes
(идентификатор класса для целевых пользователей),director_class
.shuffle - Фильтрация и классификация: Определи целевых пользователей (например, 'director', 'director\TestoedovNA'). Если поле 'SourceHostname_User' совпадает с целевым, присвой записи класс
, иначе — 0.director_class - Сортировка: Отсортируй все данные по полю 'SourceHostname_User', затем по 'UtcTime'.
- Чередование батчей (Interleaving):
- Раздели отсортированные данные на два списка:
(целевые пользователи) иdirector_data
(остальные).other_users_data - Сформируй общий список данных (
) и список классов (grouped_data
), чередуя отрезки (chunks) длинойclasses
изbatch_size
и отрезки той же длины изdirector_data
.other_users_data - Продолжай, пока один из списков не опустеет.
- Раздели отсортированные данные на два списка:
- Подготовка батча (
):__getitem__- Вычисли
иstart_idx
для текущего индекса.end_idx - Определи
(размер может быть меньшеactual_batch_size
для последнего батча).batch_size - Сформируй массив
нулей размерностиx
. Заполни его данными из полей 'EventId', 'ThreadId', 'Image'.(actual_batch_size, 100, 3) - Сформируй массив
из меток классов и преобразуй его в категориальный формат (y
).to_categorical
- Вычисли
- Обработка последнего батча (Padding):
- Если
, дополни массивыactual_batch_size < batch_size
иx
нулями с помощьюy
, чтобы их размерности сталиnp.pad
и(batch_size, 100, 3)
соответственно.(batch_size, n_classes)
- Если
- Синтаксис: Убедись, что методы класса (
,__init__
,__len__
) определены с двойными подчеркиваниями.__getitem__
Anti-Patterns
- Не используй
для всего файла сразу, если формат JSONL (каждая строка — отдельный JSON объект). Используй построчное чтение в цикле.json.load - Не забывай экранировать обратные слэши в строках имен пользователей (например, 'director\\TestoedovNA').
- Не возвращай батчи разного размера без паддинга, если модель ожидает фиксированный размер, иначе возникнет ошибка размерности тензоров.
Interaction Workflow
- Получи имя файла, размер батча и список целевых пользователей.
- Выполни предобработку данных (загрузка, сортировка, чередование) в
внутри_load_and_prepare_data
.__init__ - Возвращай готовые тензоры
иx
вy
.__getitem__
Triggers
- создай генератор данных с чередованием пользователей
- DataGenerator чередующий director и других
- подготовка данных для нейросети с батчами по 100
- чередовать последовательности пользователей в Keras