1 基本概念
2 文本分类与情感分析
获取数据集
加载数据集
训练数据集
性能设置
为了提升训练过程中数据处理的性能,keras技术框架提供数据集缓存的功能,使用缓存可以避免读取磁盘数据集时由于IO消耗太多而出现性能瓶颈的问题,如果数据集的容量太大,该缓存功能也可以将大量小文件对应的数据样本集中存储在磁盘形式的缓存中。
如上所示,prefetch方法提供将数据集预先加载到缓存中的功能,以上三个部分数据集分别对应训练数据集、验证数据集、测试数据集。
创建模型
如前所述,运行keras技术框架创建神经网络的多个处理层,然后,按照机器学习的层次将各层组装成一个神经网络。
如上所示,神经网络使用序列向量模型,嵌入向量层的维度是16,也就是,原文单词一个索引序列向量集的长度等于16,其描述如下所示:
1 第一层是嵌入层,该层先对原文(电影评价的文本)进行数字编码,产生单词数字化序列,再对每一个索引序列元素计算一个嵌入向量集,则该层的输出的维信息是(batch, sequence, embedding),该维信息表示是(批次,单词数字化序列,序列的嵌入向量集) 2 GlobalAveragePooling1D为每一个样本返回一个固定长度输出向量集,其处理方式是对每个样本所有的序列进行平均 3 中间的隐藏层具有16个神经元的稠密层(全连接层) 4 最后一层承接前一层的稠密层,收敛于一个处理单元 |
损失函数与优化器
一个模型需要一个损失函数与一个优化器用于训练,二元分类的损失函数是使用keras技术框架提供的losses.BinaryCrossentropy(二元交叉熵,在后续章节中详细描述)。
如上所示,优化器使用adam。
训练模型
使用模型的fit函数进行训练。
如上所示,进行10次迭代的训练,其中,train_ds是训练数据集,val_ds是验证数据集,二元分类的准确度不断地提升。
评估模型
模型训练完成之后,使用测试数据集对模型进行评估,评估过程输出损失值以及模型预测的准确度。
如上所示,损失值loss是损失函数的最小输出,损失越小则准确越高,accuracy是模型预测的准确度。
图表统计
以图表的方式展示损失与准确度在训练过程随着时间的变化,在前面的模型训练中,模型的fit函数返回一个训练历史记录。
如上所示,训练的历史记录的图表,loss表示训练数据集的损失值,binary_accuracy表示训练数据集二元分类的准确度,val_loss表示验证数据集的损失值,val_binary_accuracy表示验证数据集二元分类预测的准确度。
如上所示,使用训练数据集的损失值与验证数据集的损失值随着时间的变化展示在图形中,其中,横坐标epochs表示迭代训练的次数,纵坐标loss表示损失值,点号表示训练数据集损失值的变化,曲线表示验证数据集损失值的变化。
如上所示,使用训练数据集的准确度与验证数据集的准确度随着时间的变化展示在图形中,其中,横坐标epochs表示迭代训练的次数,纵坐标accuracy表示准确度,点号表示训练数据集准确度的变化,曲线表示验证数据集准确度的变化。
由以上的图表分析可知,每次迭代损失值变小,而准确度变高,其原因是在训练过程中使用梯度下降的算法对模型进行优化,在每次迭代中都最小化其损失值。
导出模型
模型测试完成,将模型导出,用于部署以及使用。
如上所示,导出模型、编译模型、评估模型。
预测示例
使用模型的predict方法对全新的数据进行预测。
如上所示,使用三个数据样本进行预测,第一个数据样本是正面评价、第二数据样本是正面评价、第三个数据样本是负面评价,三个数据样本的预测分数输出分别是0.6047846、0.42489105、0.3432073,其中,分数小于4是负面评价。
(未完待续)