我试着训练一个neural network来识别A到J的手写信件。我有一套200000码的训练。每个训练集都是784像素值的列表。我的神经网络有input layer of size 784,hidden layer of size 50和output layer of size 10。
我正在使用python的fmin_cg库的scipy最小化函数。我面临的问题是,每次迭代都要花费大量的时间。
这可能是因为我的电脑过时了,只有2GB的内存和一个缓慢的处理器,但是我以前用training set of size 5000,input layer size if 400,hidden layer size 25和output layer of size 10训练过一个神经网络。该神经网络识别手写体数字,是吴家杰机器学习课程中的一个练习问题。
所以是的,我知道当前的神经网络需要比前一个神经网络更长的训练时间,因为训练集,输入层和隐藏层都比以前的神经网络大得多,但我仍然认为这需要很长的时间。为什么这么慢?
这种规模的神经网络正常吗?还是应该使用其他更快的优化算法?有办法测量神经网络的时间复杂性吗?
发布于 2018-05-19 18:18:08
神经网络最好使用随机梯度下降(小批量)训练,而不是共轭梯度下降或其他优化方法。
我建议使用为此设计的框架,比如Keras或Tensorflow。
另外:我建议在这个特定的任务中使用卷积网络,而不是完全连接的网络。
发布于 2018-03-19 13:33:19
本教程的第一段解释得很好。
而且,如果您增加网络的大小,时间复杂度将不会线性增长。它将增长平方,参数的数目也会增长。
https://datascience.stackexchange.com/questions/14843
复制相似问题