TF28——字母预测onehot_4pre1.md
TF28——字母预测onehot_4pre1.md
用RNN实现输入连续四个字母,预测下一个字母(One hot编码)

按照六步法,首先import相关模块

我们用到的字母有5个是 a b c d e,为了送入神经网络,把字母表示为数字0 1 2 3 4,把数字 0 1 2 3 4编码为独热码

生成训练用的输入特征x_train和标签y_train,输入连续的abcd,对应的标签是e,输入连续的bcde,对应的标签是a,输入连续的cdea,对应的标签是b,输入连续的deab,对应的标签是c,输入连续的eabc,对应的标签是d

将他们打乱顺序

把输入特征变成RNN层期待的形状,使x_train符合SimpleRNN要求:[送入样本数,循环核时间展开步数,每个时间步输入特征个数]
-
第一个维度喂入输入特征的个数,使整个数据集样本数,有5个,可以用len(x_train)得到
-
第二个维度循环核时间展开步数,因为四个字母通过四个连续的时刻送入网络,所以时间展开步数是4
-
第三个维度每个时间步输入特征个数,每个时间步输入的是字母对应的独热码,是5个数,所以这里是5
再把y_train变为numpy格式

搭建育有三个记忆体的循环层,三个是我随意选的数字,你也可以自行调整记忆体个数,记忆体个数越多,记忆力越好,但是占用资源会更多,可以改变记忆体个数,看看模型收敛效果
这个Dense层实现了输出层yt的计算,由于要映射到独热码编码,找到输出概率最大的字母,所以这里是5

随后是cmopile fit summary和六步法一样,执行反向传播训练参数矩阵

提取参数和acc/loss可视化,同样用了六步法八股的套路

应用:字母预测
用了一个for循环,先输入要执行几次预测任务,随后等待输入四个字母,把这个字母,转换为独热码,调整为RNN层希望的形状,
- 只送入1组输入特征所以送入样本数是1,
- 输入连续的4个字母就给出预测结果,所以时间展开步数是4
- 每个时间步输入的是字母对应的独热码,是5个数,所以这里是5
通过predict得到预测结果,选出预测结果最大的一个,print输出预测结果
