具有多个输入的网络的超参数优化?

时间:2017-05-04 06:17:31

标签: python keras

有没有什么有效的方法可以优化这个神经网络..

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循环 - 还有其他有效的方法吗?

1 个答案:

答案 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种组合),并且可以获得与原始代码使用的数百万步骤相同的好处。