14.3 二分类任务功能测试
14.3 二分类任务功能测试⚓︎
14.3.1 搭建模型⚓︎
同样是一个双层神经网络,但是最后一层要接一个Logistic二分类函数来完成二分类任务,如图14-7所示。
图14-7 完成非线性二分类教学案例的抽象模型
def model(dataReader):
num_input = 2
num_hidden = 3
num_output = 1
max_epoch = 1000
batch_size = 5
learning_rate = 0.1
params = HyperParameters_4_0(
learning_rate, max_epoch, batch_size,
net_type=NetType.BinaryClassifier,
init_method=InitialMethod.Xavier,
stopper=Stopper(StopCondition.StopLoss, 0.02))
net = NeuralNet_4_0(params, "Arc")
fc1 = FcLayer_1_0(num_input, num_hidden, params)
net.add_layer(fc1, "fc1")
sigmoid1 = ActivationLayer(Sigmoid())
net.add_layer(sigmoid1, "sigmoid1")
fc2 = FcLayer_1_0(num_hidden, num_output, params)
net.add_layer(fc2, "fc2")
logistic = ClassificationLayer(Logistic())
net.add_layer(logistic, "logistic")
net.train(dataReader, checkpoint=10, need_test=True)
return net
超参数说明:
- 输入层神经元数为2
- 隐层的神经元数为3,使用Sigmoid激活函数
- 由于是二分类任务,所以输出层只有一个神经元,用Logistic做二分类函数
- 最多训练1000轮
- 批大小=5
- 学习率=0.1
- 绝对误差停止条件=0.02
14.3.2 运行结果⚓︎
图14-8 训练过程中损失函数值和准确率的变化
图14-8是训练记录,再看下面的打印输出结果:
......
epoch=419, total_iteration=30239
loss_train=0.010094, accuracy_train=1.000000
loss_valid=0.019141, accuracy_valid=1.000000
time used: 2.149379253387451
testing...
1.0
图14-9 分类效果
代码位置⚓︎
ch14, Level3