有没有什么有效的方法可以优化这个神经网络..
map = {}
for batch in xrange(1,100,1):
for lr in np.arange(0.00001,1,0.0000001):
for decay in np.arange(0.0000001,1,0.0000001):
for momentum in np.arange(0.001,1,0.01):
print 'batch_' + str(batch) + '_lr_' + str(lr) + '_decay_' + str(decay) + '_momentum_' + str(momentum)
result = model(batch,lr,decay,momentum)
print result
map['batch_' + str(batch) + '_lr_' + str(lr) + '_decay_' + str(decay) + '_momentum_' + str(momentum)] = result
np.save('sgd_opt.npy', map)
目前正在使用多个for循环 - 还有其他有效的方法吗?
答案 0 :(得分:1)
测试更少的组合。使用np.logspace
代替np.arange
。
for lr in np.logspace(1E-5, 1, 6): # Tests 1E-5, 1E-4, ..., 1
例如,0.00012和0.00013之间的学习率可能没有太大差异。您不需要测试所有这些。
如果您想测试超过6种学习率,请继续。这会让你有一个很好的传播,你应该为你的衰退和动力做同样的事情。您可以测试6种学习率,6种衰变和3种动量(总共108种组合),并且可以获得与原始代码使用的数百万步骤相同的好处。