训练模型
前面一章中已经定义好了网络模型,我们就用定义好的模型和数据集开始训练。具体实现如下:
avg_loss = -1
base_lr = 0.01
for i in range(10000):
learning_rate = base_lr * (1 + 0.0001 * i) ** (-0.75)
if i % 100 == 0:
print("Testing ...")
data.set_mode(data.TEST)
acc_sum = 0
for j in range(100):
data.next_batch_test_data()
accuracy = calc_accuracy(softmax.forward(), data.get_label())
acc_sum = acc_sum + accuracy
acc_sum = acc_sum / 100
print("Accuracy = %.4f" % (acc_sum))
data.set_mode(data.TRAIN)
data.next_batch_train_data()
softmax.forward()
loss = softmax.calc_loss(data.get_label())
if avg_loss == -1:
avg_loss = loss
else:
avg_loss = avg_loss * 0.9 + 0.1 * loss
print("iter = %-5d\tLoss = %.4f\tAvg loss = %.4f\tLearning rate = %f" % (i + 1, loss, avg_loss, learning_rate))
softmax.backward(learning_rate)
#训练过程如下
最后能达到98%的准确度。