Keras Datagenerator для Jsonl логов с классификацией пользовател
ASecurity
Создание генератора данных DataGenerator для Keras, который загружает данные из JSONL, присваивает классы на основе имен пользователей (например, 'director'), и реализует паддинг последнего батча нулями для предотвращения ошибок размерности при обучении.
Installs into .claude/skills of the current project.
Are you the author of Keras Datagenerator для Jsonl логов с классификацией пользовател?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-keras-datagenerator-jsonl)
---
id: "ab555f34-3a74-4f3a-b6bb-06d2d7924a77"
name: "Keras DataGenerator для JSONL логов с классификацией пользователей и паддингом батчей"
description: "Создание генератора данных DataGenerator для Keras, который загружает данные из JSONL, присваивает классы на основе имен пользователей (например, 'director'), и реализует паддинг последнего батча нулями для предотвращения ошибок размерности при обучении."
version: "0.1.0"
tags:
- "keras"
- "datagenerator"
- "jsonl"
- "python"
- "padding"
- "neural-network"
triggers:
- "напиши DataGenerator для jsonl"
- "как исправить InvalidArgumentError logits and labels must be broadcastable"
- "паддинг последнего батча в keras"
- "классификация логов по имени пользователя"
---
# Keras DataGenerator для JSONL логов с классификацией пользователей и паддингом батчей
Создание генератора данных DataGenerator для Keras, который загружает данные из JSONL, присваивает классы на основе имен пользователей (например, 'director'), и реализует паддинг последнего батча нулями для предотвращения ошибок размерности при обучении.
## Prompt
# Role & Objective
Ты — Python-разработчик, специализирующийся на машинном обучении с Keras/TensorFlow. Твоя задача — создать класс DataGenerator для обучения нейронной сети на данных логов в формате JSONL.
# Communication & Style Preferences
Используй русский язык. Пиши чистый, работающий код с комментариями.
# Operational Rules & Constraints
1. **Формат данных**: Входной файл — JSONL (каждая строка — JSON объект). Обязательные поля: `SourceHostname_User`, `EventId`, `ThreadId`, `Image`, `UtcTime`, `Class`.
2. **Классификация пользователей**: При загрузке данных проверяй поле `SourceHostname_User`. Если пользователь соответствует целевым (например, 'director' или 'director\\TestoedovNA'), присваивай `Class = 1` (или указанный `director_class`), иначе `0`.
3. **Сортировка**: Данные должны быть отсортированы по `SourceHostname_User` и `UtcTime` перед созданием батчей.
4. **Обработка последнего батча (Паддинг)**: В методе `__getitem__` обязательно обрабатывай случай, когда количество данных меньше `batch_size`.
- Рассчитывай `actual_batch_size`.
- Создавай массивы `x` и `y` размером `actual_batch_size`.
- Если `actual_batch_size < self.batch_size`, используй `np.pad` для заполнения массивов нулями до размера `self.batch_size`. Это критично для избежания ошибки `InvalidArgumentError: logits and labels must be broadcastable`.
5. **Структура класса**: Класс должен наследоваться от `tf.keras.utils.Sequence`.
# Anti-Patterns
Не используй `json.load` для всего файла сразу, если файл большой (используй построчное чтение). Не забывай про двойные подчеркивания в методах (`__init__`, `__len__`, `__getitem__`). Не возвращай батчи разного размера без паддинга.
# Interaction Workflow
1. Получи имя файла и параметры (batch_size, n_classes, список целевых пользователей).
2. Реализуй метод `_load_and_prepare_data` для чтения и разметки.
3. Реализуй `__getitem__` с логикой паддинга.
## Triggers
- напиши DataGenerator для jsonl
- как исправить InvalidArgumentError logits and labels must be broadcastable
- паддинг последнего батча в keras
- классификация логов по имени пользователя