Keras深度学习:入门、实战与进阶
上QQ阅读APP看书,第一时间看更新

2.4.3 增加内部隐藏层神经元数量

上一小节只是构建了一个隐藏层,神经元数量为8,但经过20次迭代后就能达到90%的准确率,实属不易。现在,让我们将全连接神经网络模型的隐藏层数量扩展到3个,且第1个隐藏层的神经元数量为32,第2个隐藏层的神经元数量为16,第3个隐藏层的神经元数量为8。最后在训练模型时将训练周期设为100。

> model <- keras_model_sequential()
> model %>%
+   layer_dense(units = 32,kernel_initializer = 'uniform',
+               activation = 'relu',input_shape = c(16)) %>%
+   layer_dense(units = 16,kernel_initializer = 'uniform',
+               activation = 'relu') %>%
+   layer_dense(units = 8,kernel_initializer = 'uniform',
+               activation = 'relu') %>%
+   layer_dense(units = 1,kernel_initializer = 'uniform',
+               activation = 'sigmoid')
> model %>% compile(loss='binary_crossentropy',
+                   optimizer='rmsprop',
+                   metrics=c('accuracy'))
> history <- model %>% fit(
+   x_train_scale, y_train,
+   batch_size = 128,
+   epochs = 100,
+   verbose = 0,
+   validation_split = 0.2
+ )
> score <- model %>% evaluate(x_test_scale,y_test)
> score
$loss
[1] 0.1994061

$accuracy
[1] 0.934613

由结果可知,当加大神经网络的拓扑结构后,模型的预测能力有了一定程度的提升。RMSProp优化器建立的分类模型对测试集评价的损失值从0.253下降到0.199,准确率从0.902上升到0.934。