网格搜索和随机搜索各自的缺点 量化app哪个最好?
量化app哪个最好?
目前国内最常用的ap软件有两个,分别是恒生PTrad
如何更好地调试神经网络?
声明:本文适合神经网络初学者。
神经网络的调试比大多数程序更难,因为大多数bug不会导致运行错误,只会导致不好的收敛。可能有许多看似模糊的错误消息:
性能错误:您的神经网络没有训练好(性能:您的神经网络没有训练好)。
如果你有经验,你应该知道这意味着代码需要大的改变。
第一,对付南?在大多数情况下,NaN错误发生在前100次迭代中,原因很简单:你的学习率太高了。当学习率很高时,在前100次迭代中会出现NaN错误。使用系数3来降低学习率,直到前100次迭代不再出现NaN错误。一旦这样做了,你将会有一个非常好的学习速度。根据我的经验,最好的学习率是你得到NaN错误的范围的十分之一。
如果在100次迭代后遇到NaN错误,有两个常见原因。
如果你正在使用RNN,确保你正在使用梯度下降,并纠正它。用L2正则化梯度。RNN在训练初期似乎有一个梯度,10%以下批次有学习高峰,此时梯度幅度相当高。如果不切割梯度,这些峰将产生NaN。
如果写自定义网络层,很有可能NaN是除以0造成的。另一个已知会产生Nan误差的层是Softmax层。Softmax计算包括分子和分母的exp(x)运算,可以将无穷大除以无穷大,得到NaN。确保使用稳定的Softmax实现。
第二,神经网络可以 不学?一旦你没有NaN误差,你的神经网络可以平滑运行上千次迭代,也不会减少前几百次迭代后的训练损失。当你第一次构建代码库时,你 最好不要使用2000次迭代。这并不是因为所有的网络都可以从少于2000次的迭代中学习。相反,从一开始就对网络进行编码很可能会有bug,在达到高迭代次数之前,您会希望过早地对其进行调试。现在的目标是一次又一次地缩小问题的范围,直到你得到一个在2000次迭代下训练出来的网络。幸运的是,有两种方法可以降低复杂性。
将训练集的大小减少到10个实例。在数百次迭代中,在这10个实例中,神经网络通常出现过拟合。许多编码错误不会导致过拟合。如果你的网络没有。;不要过度适应10个示例的训练集,请确保您使用的数据标记正确。将批次大小减少到1,以检查批次计算错误。将打印语句添加到代码中,以确保输出与您的期望一致。通常可以通过上面介绍的纯蛮力找出错误。一旦可以在10个实例上训练网络,就可以尝试在100个实例上训练它。如果这种方常工作,但效果不是很好,可以尝试以下方法。
解决你感兴趣的最简单的问题。如果要翻译句子,可以先建立一个特定语言的语言模型。如果你已经完成了,试着用三个单词预测第一个翻译的单词。如果要检测图像中的物体,可以在训练回归网络之前对图像中的物体数量进行分类。在网络可以解决的棘手问题和使用最少的时间为代码获取适当的数据之间有一个权衡。这是发挥你创造力的时候了。
将神经网络应用到其他新场景的技巧就是合理使用上面介绍的两个步骤。这是一种协调机制,效果不错。首先,你表明这个神经网络至少能记住几个例子。然后这个神经网络可以推广到更简单问题的验证集。你在稳步前进的同时也在慢慢增加难度。It 没有卡帕西 专家第一次使用的风格,但至少它是有效的。有时候你会遇到难题,你会的发现2000次迭代就不再继续学习了。那个 太棒了!但是迭代次数很少是这个问题之前复杂度的10倍。如果您发现是这种情况,请尝试搜索中等复杂程度。
第三,调整参数。现在你的网络可以学习东西,你可能会忘乎所以。你可能还会发现你训练的网络可以 不能解决大多数复杂的问题。超参数调整是解决问题的关键。有些人直接下载CNN软件包并在他们的数据集上运行,然后告诉你使用超参数调整并不 没什么区别。这是因为他们使用现有的架构来解决现有的问题。如果你想解决的问题需要一个新的架构,就需要通过超参数调整来得到一个好的设置。你 d最好确定你已经看了你要解决的问题的超参数教程,不过我下面会列出一些基本思路。
可视化:唐 不要害怕在培训期间花时间编写定制的可视化工具。如果你的可视化方法不。;如果行不通,考虑另一种方法。
权重初始化:一般来说,较大的初始化权重是一个不错的选择,但是过大会导致NaN。
确保重量看起来 "健康 "。为了理解这意味着什么,我建议在IPython 的笔记本。花点时间观察在标准数据集(如ImageNet或Penn Tree Bank)上训练的成熟网络中组件权重的直方图应该是什么样子。
神经网络的w.r.t输入不是常数,特别是用SGD代替其他方法时,因为SGD不是一种尺度不变的方法。花时间以其他扩展输入数据和输出标签。
在训练中降低学习率几乎总能给你带来进步。最佳衰减策略通常是:K次迭代后,每N次迭代用1.5 kgtn除学习率。
使用参数配置文件,虽然把参数放到代码里是可以的,但是如果要尝试不同的值会比较麻烦。我将参数放在一个JSON文件中,并用一个命令导入它们。确切的格式并不重要。唐 不要轻易重构代码,因为重载超参数更麻烦!重构会引入bug,会延长训练周期,在你得到喜欢的网络之前是可以避免的。
更多优质内容,请持续关注镁客网~ ~
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。