栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何创建简单的三层神经网络并使用监督学习进行教学?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何创建简单的三层神经网络并使用监督学习进行教学?

您的方法有四个问题,在阅读《神经网络常见问题》后都可以轻松找到:

  • 为什么要使用偏置/阈值?:您应该添加一个偏置节点。偏见的缺乏使学习非常有限:网络代表的分离的超平面只能通过原点。使用bias节点,它可以自由移动并更好地拟合数据:

    bias = BiasUnit()

    n.addModule(bias)

    bias_to_hidden = FullConnection(bias, hiddenLayer)
    n.addConnection(bias_to_hidden)

  • 为什么不将二进制输入编码为0和1?:所有样本都位于样本空间的一个象限中。移动它们使其分散在原点周围:

    ds = SupervisedDataSet(2, 1)

    ds.addSample((-1, -1), (0,))
    ds.addSample((-1, 1), (1,))
    ds.addSample((1, -1), (1,))
    ds.addSample((1, 1), (0,))

(相应地,将验证码固定在脚本的末尾。)

  • trainUntilConvergence
    该方法使用验证工作,并且执行类似于早期停止方法的操作。对于这么小的数据集,这没有任何意义。使用
    trainEpochs
    代替。
    1000
    对于这个问题,时代对于网络而言已经足够了:

    trainer.trainEpochs(1000)
  • 反向传播应使用哪种学习率?:调整学习率参数。每当您使用神经网络时,便会执行此操作。在这种情况下,该值

    0.1
    甚至会
    0.2
    大大提高学习速度:

    trainer = BackpropTrainer(n, dataset=ds, learningrate=0.1, verbose=True)

(请注意

verbose=True
参数。调整参数时,观察错误的行为至关重要。)

有了这些修复程序,我就可以针对具有给定数据集的给定网络获得一致且正确的结果,并且误差小于

1e-23



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号