zoukankan      html  css  js  c++  java
  • 手撕神经网络实验报告

    实验报告

    代码见 https://github.com/pgcai/DoraPy

    • 姓名:pgcai

    • 学号:*********

    神经网络框架

    实验一(拟合函数)

    实验目的

    尝试使用不同的n(神经元层数)和Ti(参数个数)参数定义神经网络。然后在定义域范围内随机采样作为输入,拟合定义域为-pi到pi的目标函数 y = a·cos(bx) + c·sin(dx),a、b、c、d自己设置。然后评估拟合效果,将拟合到的函数可视化并与目标函数对比。

    数据准备

    train

    test

    网络设计

    net_1

    net_2

    训练方法

    ​ 对真实数据标记与模型预测标记之间的误差目标函数最小化利用梯度下降算法更新参数,在模型隐层的参数利用误差反向传播算法计算它们的更新值。

    实验结果

    运行实验代码

    lr = 1e-3
    batch_size = 32 
    batch = int(train_x.shape[0]/batch_size)
    epoch = 2000
    
    net = fc_model()
    loss = nn.loss.MSE()
    optimizer = nn.optimizer.Adam(lr=lr)
    

    实验结果分析

    net_1

    net_2

    rmse = 0.013692547631695478
    mae = 0.009944943695638564

    实验二(手写数字识别)

    实验目的

    选择一个小的图像数据集如人脸or MNIST,使用选择的数据集对该神经网络进行训练和测试。评估测试结果。

    数据准备

    60000个训练样本

    10000个测试样本

    网络设计

    训练方法

    对真实数据标记与模型预测标记之间的误差目标函数最小化利用梯度下降算法更新参数,在模型隐层和卷积池化层的参数利用误差反向传播算法计算它们的更新值。轮询输入每个batch的MNIST训练数据,每次输入更新一次模型参数,最后利用更新好的模型参数在所有测试数据上进行准确率计算。

    实验结果

    运行实验代码

    实验结果分析

    总结及体会

    挺好玩的。

  • 相关阅读:
    Jboss
    AOP
    Spring AOP原理及拦截器
    深度解析Struts2中ValueStack
    struts2 ValueStack的作用
    理解ValueStack的基本机制
    Strus2中关于ValueStack详解
    struts2中的值栈对象ValueStack
    吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)
    吴裕雄--天生自然Numpy库学习笔记:NumPy 高级索引
  • 原文地址:https://www.cnblogs.com/cpg123/p/15718953.html
Copyright © 2011-2022 走看看