agentsclimarketplace

基于keras的字符级lstm文本生成与cpu多进程训练

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/chinese_gpt4_8_GLM4.7/基于keras的字符级lstm文本生成与cpu多进程训练

构建字符级LSTM模型进行文本生成,解决Tokenizer索引越界问题,并配置CPU多进程训练优化。From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill 基于keras的字符级lstm文本生成与cpu多进程训练

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

3.3 KB, 901 tokens by cl100k_base, as published. Nobody here has run it

基于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_crossentropycategorical_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_sizetokenizer.word_index 长度之间的差异。
  • 不要在CPU训练时忽略 workersuse_multiprocessing 参数的配置。

Triggers

  • 构建字符级LSTM文本生成模型
  • 解决Keras Embedding索引越界错误
  • 使用CPU多进程训练Keras模型
  • Tokenizer char level 文本生成

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.