TF210——字母预测Embedding_1pre1.md


TF210——字母预测Embedding_1pre1.md

用RNN输入一个字母,预测下一个字母(Embedding编码)

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

image-20220321170855269

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

image-20220321171706413

生成训练用的输入特征x_train和标签y_train,输入特征a,对应的标签是b,输入特征b,对应的标签是c,输入特征d,对应的标签是e,输入特征e,对应的标签是a

image-20220321171736787

将他们打乱顺序

image-20220321142039657

把输入特征变成Embedding层期待的形状:

  • 第一个维度喂入输入特征的个数,使整个数据集样本数,有5个,可以用len(x_train)得到
  • 第二个维度循环核时间展开步数,因为输入一个字母就得到输出,所以时间展开步数是1

再把y_train变为numpy格式

image-20220321174956325

在用Sequential搭建网络时,多了一层Embedding层,先对输入数据进行编码,这一层会生成一个五行两列的可训练参数矩阵,实现编码可训练

随后,搭建有三个记忆体的循环层,设置Dense层全连接实现了输出层yt的计算

image-20220321171453508

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

image-20220321143438839

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

image-20220321143541527

应用:字母预测

在预测结果时,把读到的输入字母直接查找表示它的ID值,把读到的输入字母直接查找表示它的ID值,调整为Embedding层希望的形状

  • 只送入1组输入特征所以送入样本数是1,
  • 输入1次就给出预测结果,所以时间展开步数是1
  • 每个时间步输入的是字母对应的独热码,是5个数,所以这里是5

通过predict得到预测结果,选出预测结果最大的一个,print输出预测结果

image-20220321171942143