TF26——字母预测onehot_1pre1.md
TF26——字母预测onehot_1pre1.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,输入特征a,对应的标签是b,输入特征b,对应的标签是c,输入特征d,对应的标签是e,输入特征e,对应的标签是a

将他们打乱顺序

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

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

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

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

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