20.3 训练一个二元分类器
问题描述
训练一个二元分类的神经网络。
解决方案
使用Keras构建一个前馈神经网络,然后用fit方法训练它:
讨论
在20.2节中,我们讨论过如何使用Keras的sequential模型,本节我们使用真实数据来训练神经网络。准确地说,我们用了50,000条影评数据(25,000条用作训练数据, 25,000条用作测试数据),然后把它们分为正面评价和负面评价。我们把评论的文本转化为1000个二元特征值来表示1000个最常出现的词出现与否。简单地说,就是我们的神经网络会使用25,000个观察值来预测一条影评是正面的还是负面的评价,其中每个观察值有1000个特征。这里我们使用跟20.2节一样的神经网络(如果想看详细的解释,可以参考20.2节)。不一样的地方是,在20.2节中我们仅创建了神经网络但并没有训练它。
在Keras中,训练神经网络用的是fit方法,它需要指定6个重要的参数。
前两个参数是训练数据的特征和目标向量。我们可以使用shape方法查看特征矩阵的形状:
epochs参数指定在训练数据时需要使用多少个epoch。verbose参数决定在训练过程中需要输出多少信息:0表示没有输出,1表示输出一个进度条,2表示每个epoch输出一条日志。batch_size设定在计算多少个观察值之后才更新参数。
最后,我们保留一个测试集数据来评估模型。这些测试用的特征和目标向量可以放在validation_data参数中,用来评估模型。或者,我们可以使用validation_split参数来设定要留多少比例的训练集数据用于评估模型。
在scikit-learn中fit方法返回一个训练后的模型,但是在Keras中fit方法返回一个History对象,它包含损失数据和每个epoch的性能数据。
本书评论