Epoch510
1688416884[==============================]-42s3msstep-loss:0。0955-acc:0。9728-val_loss:0。2901-val_acc:0。9083
Epoch610
1688416884[==============================]-42s2msstep-loss:0。0749-acc:0。9801-val_loss:0。3316-val_acc:0。9078
Epoch710
1688416884[==============================]-43s3msstep-loss:0。0687-acc:0。9814-val_loss:0。3266-val_acc:0。9048
Epoch810
1688416884[==============================]-42s3msstep-loss:0。0493-acc:0。9877-val_loss:0。3791-val_acc:0。9119
Epoch910
1688416884[==============================]-42s2msstep-loss:0。0435-acc:0。9887-val_loss:0。4097-val_acc:0。9083
Epoch1010
1688416884[==============================]-42s2msstep-loss:0。0378-acc:0。9911-val_loss:0。4326-val_acc:0。9029
&e。。。
42214221[==============================]-3s636usstep
Loss:0。43,Accuracy:90。29%
可以看到,训练过程中会显示每个Epoch所花费的时间、损失、精度等信息。经过10个Epoch的训练,识别网络在测试集上的精度超过90%。
需要提醒的是,并不是训练的Epoch越多越好。虽然精度也许会不断提升,但是检验精度也许会下降,这就说明网络在训练集上已经过拟合了,此时应该停止训练。准确率与很多因素有关,调整网络结构、网络参数、增加标注数据、训练更好的词向量等方式都可以有效地提高识别准确率。本教材所使用的模型并未经过仔细调整,读者可以尝试各种调整方式以取得更好的识别效果。
接下来介绍识别模块,代码如下。
#导入需要使用的库并设定参数
importsys
fromkeras。modelsimportload_model
importnumpyasnp
np。random。seed(1337)
fromlstmimportinput_transform
importmultiprog
vocab_dim=100
maxlen=100
&ions=1
n_exposures=10
window_size=10
batch_size=30
n_epoch=10
ih=100
ultiprog。t()
argvs_length=len(sys。argv)
argvs=sys。argv
&ence表示需要识别情绪的句子,在识别过程中通过读取交互控制台