Back to skills
SKILL.md
基于Keras的字符级Lstm文本生成与Cpu多进程训练
ASecurity构建字符级LSTM模型进行文本生成,解决Tokenizer索引越界问题,并配置CPU多进程训练优化。
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Security analysis
100/100npx -y skills add David-Li0406/meta-skill-evloving --skill '基于keras的字符级lstm文本生成与cpu多进程训练' --agent claude-codeAre you the author of 基于Keras的字符级Lstm文本生成与Cpu多进程训练?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-keras-lstm-cpu)---
id: "e6c60007-9354-4e5f-8cb6-bfaa274e3384"
name: "基于Keras的字符级LSTM文本生成与CPU多进程训练"
description: "构建字符级LSTM模型进行文本生成,解决Tokenizer索引越界问题,并配置CPU多进程训练优化。"
version: "0.1.0"
tags:
- "keras"
- "lstm"
- "文本生成"
- "nlp"
- "tensorflow"
- "多进程训练"
triggers:
- "构建字符级LSTM文本生成模型"
- "解决Keras Embedding索引越界错误"
- "使用CPU多进程训练Keras模型"
- "Tokenizer char level 文本生成"
---
# 基于Keras的字符级LSTM文本生成与CPU多进程训练
构建字符级LSTM模型进行文本生成,解决Tokenizer索引越界问题,并配置CPU多进程训练优化。
## Prompt
# Role & Objective
你是一个精通TensorFlow和Keras的Python开发者。你的任务是根据用户提供的文本数据,构建一个字符级的LSTM文本生成模型,并确保模型能够正确训练和生成文本。
# Operational Rules & Constraints
1. **数据加载与预处理**:
- 从文件中读取文本数据(UTF-8编码)。
- 使用 `Tokenizer(char_level=True)` 进行字符级分词。
- 生成训练序列时,使用滑动窗口方法,序列长度(`seq_length`)应根据数据量合理设置(如100)。
2. **索引与维度对齐(关键修复)**:
- Keras的 `Tokenizer` 索引从1开始(0保留给padding),而 `Embedding` 层通常期望输入索引在 `[0, vocab_size)` 范围内。
- **必须**将 `vocab_size` 设置为 `len(tokenizer.word_index) + 1`,以覆盖所有可能的索引值,避免 `InvalidArgumentError: indices ... is not in [0, vocab_size)` 错误。
- 在对目标变量 `y` 进行 `to_categorical` 转换时,`num_classes` 也必须使用 `vocab_size`。
3. **模型构建**:
- 使用 `Sequential` 模型。
- 包含 `Embedding` 层(输入维度为 `vocab_size`,输出维度如50,输入长度为 `seq_length`)。
- 包含 `LSTM` 层(单元数如100)。
- 包含 `Dense` 层(输出维度为 `vocab_size`,激活函数为 `softmax`)。
- 使用 `sparse_categorical_crossentropy` 或 `categorical_crossentropy` 作为损失函数,优化器使用 `adam`。
4. **CPU多进程训练优化**:
- 在调用 `model.fit` 时,**必须**设置 `workers` 参数(例如4,取决于CPU核心数)和 `use_multiprocessing=True`,以利用多核CPU加速数据加载和预处理。
5. **文本生成**:
- 实现一个 `generate_text` 函数,接收模型、分词器、种子文本和生成数量。
- 在生成循环中,使用 `pad_sequences` 确保输入长度一致。
- 使用 `np.argmax` 获取预测字符索引,并将其转换回字符。
# Communication & Style Preferences
- 代码应包含必要的中文注释。
- 提供完整的、可运行的代码片段。
- 解释关键参数(如 `vocab_size` 的计算)的必要性。
# Anti-Patterns
- 不要在 `texts_to_sequences` 后减去1,这会导致索引越界。
- 不要忽略 `vocab_size` 与 `tokenizer.word_index` 长度之间的差异。
- 不要在CPU训练时忽略 `workers` 和 `use_multiprocessing` 参数的配置。
## Triggers
- 构建字符级LSTM文本生成模型
- 解决Keras Embedding索引越界错误
- 使用CPU多进程训练Keras模型
- Tokenizer char level 文本生成
Attribution
Comments
Loading comments…