Fullstar

Archives

  • December 2025
  • August 2024
  • July 2024
  • February 2024
  • November 2023
  • August 2023
  • July 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • February 2022
  • January 2022
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020

Categories

  • Code
  • Lens
  • Life
0
Fullstar
  • Code

基于RNN的自动文本生成

  • July 22, 2020
  • Brandon

Looking for a Shorter Overview?

AI Summary

文本先被拆分为字符索引数组,再通过独热编码或Embedding转换成可供RNN处理的向量。SimpleRNN根据输入序列预测下一个字符,并结合Dense层、softmax和交叉熵损失完成字符分类训练。

Key Moments

AI-generated
1

字符词典映射

使用set收集文本中的字符,并通过index建立字符与索引值对应的dict。
2

文本序列数字化

依据dict将每个字符替换为对应索引,使原始文本转换为数字array序列。
3

字符向量编码

可手动将索引转换为长度等于词典大小的one-hot向量,或通过Embedding层自动生成向量表示。
4

RNN分类训练

以字符序列作为SimpleRNN输入,并通过带softmax的Dense层和categorical_crossentropy预测下一个字符。
Total
0
Shares
0
0
0

一.基本思路
1.假设有一段文本:the apple is red,首先对在句子中的各个字母用set进行收集,并利用index生成(index, alpha)形式的dict

2.将文本利用dict中的key进行转化,如t对应index值为1,h为2,e为3,则the可转化为1 2 3,因此文本转化为array[1 2 3 …]

3.对每一个数字进行编码转换
方式1:手动进行one-hot编码
假设len(dict)=10,则一个数字转化的vendor长度为10,如2中的1可转化为$[1,0,0…,0]^T$
方式2:利用Embedding层进行自动转换
假设将shape=(1,10)输入Embedding(a,b)层,则将输出shape=(1,10,b),即利用embedding对输入矩阵的每一个值进行向量转化

4.构建模型
(1)建立SimpleRNN层,输入shape=(array_len,dict_len),输出shape=(1,dict_len),其中 array_len 表示文本转化的array的长度,dict_len表示dict的长度,由于输入一个句子输出一个字母,因此输出值shape即一个字母的数值表示,shape=(1,dict_len)
(2)建立Dense层,设置units=dict_len,使用softmax激活函数将输出值进行压缩,并利用 categorical_crossentropy 作为loss function。即将问题转化为classification,利用全连接层进行训练,计算其与label的loss并进行反向传播调整参数,从而完成训练

参考链接:用Keras实现SimpleRNN:生成文本

Related Posts

AI-generated

attention model

注意力机制不再让解码器反复依赖同一个向量,而是在每个时间步选择最相关的编码信息。文章说明其计算流程,并展示它如何将图像特征逐词转化为描述语句。
60.7% match July 26, 2020

Keras Embedding层

Embedding层将每个词的整数编号映射为稠密向量,避免独热编码难以表达词间关系的问题;结合Keras示例,快速掌握三个关键参数与输出形状的对应关系。
54.7% match July 21, 2020

Questions Answered

AI-generated

如何为文本中的字符建立数字索引?

用set收集字符,再利用index生成字符与索引字典。

文本为什么要转换成数字数组?

模型需要根据字典索引读取每个字符对应的数值序列。

字符数字可以采用哪些编码方式?

可使用手动独热编码,或通过Embedding层自动转换向量。

RNN如何完成下一个字符预测训练?

结合Dense、softmax和交叉熵损失进行分类与反向传播。

Next Up

动态注意力机制
词向量映射
读写外部记忆
Keras 实战速记
Total
0
Shares
Share 0
Tweet 0
Pin it 0
Brandon

Previous Article
  • Code

Keras Embedding层

  • July 21, 2020
  • Brandon
View Post
Next Article
  • Code

attention model

  • July 26, 2020
  • Brandon
View Post
You May Also Like
View Post
  • Code

Letta部署记录

  • Brandon
  • December 26, 2025
View Post
  • Code

WordPress 后台任务利器:使用 BGRunner 构建可靠的异步处理

  • Brandon
  • December 14, 2025
View Post
  • Code

WordPress image offload

  • Brandon
  • December 14, 2025
View Post
  • Code

ComfyUI应用手册

  • Brandon
  • December 6, 2025
View Post
  • Code

Leetcode Java常用代码

  • Brandon
  • February 17, 2024
View Post
  • Code

Golang入门

  • Brandon
  • February 4, 2024
View Post
  • Code

Setting Up and Maintaining a Ubuntu Environment for My Home Server

  • Brandon
  • November 24, 2023
View Post
  • Code

Swift Learning Log

  • Brandon
  • August 31, 2023

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Fullstar

Input your search keywords and press Enter.

attention model

Keras Embedding层

Memory Network

Private: keras简单实战代码记录

Letta部署记录

ComfyUI应用手册

UP NEXT

attention model

60.7% match July 26, 2020 0