人工智能实战_第六次作业_陈泽寅

16071070 _ 陈泽寅 _ 第六次作业:

一、简要概述

项目 内容
课程 人工智能实战2019
作业要求 作业要求
我在这个课程的目标是 能够理解人工智能实践与理论框架,独立完成小项目
这个作业在哪个具体方面帮助我实现目标 理解不同参数对于网络性能的影响,加深对网络的理解

二、作业内容

a. 将模型准确度调整至>97%

b. 整理形成博客,博客中给出参数列表和对应值

c. 给出最终的loss下降曲线

d. 给出最终准确度结果

三、核心代码

以改变epoch为例

if __name__ == '__main__':

    print("Loading...")

    n_hidden1 = 128
    n_hidden2 = 64
    n_output = 10
    learning_rate = 0.1
    dataReader = LoadData(n_output)
    n_images = dataReader.num_example
    n_input = dataReader.num_feature
    m_epoch = 10
    batch_list= [5,10,20,50,100]
    epoch_list = [10,20,30,40,50]
    correct = []
    n = [10,20,30,40,50]
    print(n)
    batch_size = 10
    for i in range(5):
        m_epoch = epoch_list[i]
        dict_Param = InitialParameters3(n_input, n_hidden1, n_hidden2, n_output, 2)
        dict_Param = Train(dataReader, learning_rate, m_epoch, n_images, n_input, n_output, dict_Param, forward3, backward3, update3, batch_size)
        SaveResult(dict_Param)
        rate = Test(dataReader, n_output, dict_Param, n_input, forward3)
        correct.append(rate/10000.0)
    plt.figure()
    plt.plot(n,correct)
    plt.xlabel("Epoch")
    plt.ylabel("correctness")
    plt.show()

一、尝试调整学习率

标号 学习率 隐藏层1神经元数 隐藏层2神经元数 epoch次数 batch_size 测试集正确率
1 0.05 64 32 10 10 0.9712
2 0.1 64 32 10 10 0.9748
3 0.2 64 32 10 10 0.9749
4 0.4 64 32 10 10 0.9705
5 0.8 64 32 10 10 0.9607

二、尝试调整batch_size

标号 学习率 隐藏层1神经元数 隐藏层2神经元数 epoch次数 batch_size 测试集正确率
1 0.1 128 64 10 5 0.9768
2 0.1 128 64 10 10 0.9784
3 0.1 128 64 10 20 0.9771
4 0.1 128 64 10 50 0.9675
5 0.1 128 64 10 100 0.9544

三、调整epoch

标号 学习率 隐藏层1神经元数 隐藏层2神经元数 epoch次数 batch_size 测试集正确率
1 0.5 128 64 10 10 0.9769
2 0.5 128 64 20 10 0.9809
3 0.5 128 64 30 10 0.9805
4 0.5 128 64 40 10 0.9795
5 0.5 128 64 50 10 0.9805

将batch_size调整为20

标号 学习率 隐藏层1神经元数 隐藏层2神经元数 epoch次数 batch_size 测试集正确率
1 0.5 128 64 10 20 0.9749
2 0.5 128 64 20 20 0.9803
3 0.5 128 64 30 20 0.9822
4 0.5 128 64 40 20 0.9798
5 0.5 128 64 50 20 0.9807

结论:

当我们选取参数为

  • 学习率:0.5
  • 隐藏层一:128
  • 隐藏层二:64
  • Epoch: 30
  • batch_size:20

我们得到最佳的预测正确率为 98.22%.

四、Loss曲线

五:结论

我们可以看出在调整参数的过程中;适当增加神经元数目;降低学习率;增加循环次数可以提高测试集正确率;但是在改变参数如循环Epoch的次数,神经网络神经元个数时,也会导致训练时间的增大。

猜你喜欢

转载自www.cnblogs.com/somnus-chen/p/10748967.html