它取决于数据的质量,输入/隐藏/输出和softmax的大小(用于多类分类)以及NN的体系结构。你需要平衡训练网络所需的时间,数据的可用性,数据的质量,调整超参数和卷积的维数(如果使用cNN):
我的一般经验如下: 1.对于CNN,如果你拥有属性稍有不同的相似图像,则网络的学习速度将比差异很大的图像快。我们观察到对于食物图像(我们将其分类为卡路里范围)是正确的。
2.你至少需要10,000张图像才能在交叉验证集上获得不错的准确性(60 +%)。你将需要更大的数据集才能表现更好。(60%只是我们的一个经验,对于你的数据集可能需要重新确立基线)。
3.使用转换和生成模型从现有数据集中生成更多数据,可帮助你增加数据集的大小。在神经网络中,通常观察到的是更多的数据=>更好的准确性。这将帮助你对NN进行正则化并减少过度拟合,尤其是在你的数据集不能完全代表将使用NN的域的情况下。
4.这些是一些不错的文章/课程,如果你在构建系统之前仔细阅读它们,可能会有所帮助: a.如何提高深度学习性能-精通机器学习http://machinelearningmastery.com/improve-deep-learning-performance/ b.CS231n用于视觉识别的卷积神经网络http://cs231n.github.io/
5.如果你只是刚开始该项目,并且希望在深入研究构建解决方案之前看到深度学习过程正在运行,那么
a.下载任何Tensorflow / Theano / Keras软件包/源,并运行与它们一起打包的MNIST示例。
b.然后,最终将MNIST数据集替换为数据集的子集或维度降低了的完整数据集(转换为灰度,固定大小为300 * 300像素)。
c.尝试使用超参数和隐藏层,以检查测试数据的准确性。
d.为了节省时间,请在带有GPU的AWS实例上使用。这节省了我们很多的培训时间。
该回答来自:亚马逊(公司)的软件开发工程师萨钦(Sachin Panemangalore)