我们应该尝试什么:低或高学习率?

时间:2017-08-01 01:32:13

标签: machine-learning tensorflow neural-network deep-learning

我正在调整SGD和Adam的学习率。我先试试SGD。我对学习率选择有疑问。我应该先尝试什么:低学习或高学习率?我读了一些建议尝试高学习率然后通过调度来减少它的参考文献。这样对吗? 对于Adam来说,这是一种自适应学习率。亚当方法的学习率通常不到SGD学习率的5倍或10倍是正确的吗?

1 个答案:

答案 0 :(得分:0)

学习率取决于您的数据和问题。然而,Adam优化器通常被认为是更先进的优化器,因为它在训练时调整学习速率。在训练时调整学习速度可以让您不会陷入局部最优状态,也不会对训练集中的某些类型的数据产生偏差。我不确定你使用的是哪个库,但无论如何,绘制你的培训和验证都是值得的,可视化你的损失,以便更好地了解发生的事情。例如,如果你使用的是Keras,这很容易......

# Record the Keras history object for plotting
keras_history_object = model.fit_generator(batch_generator(training_data, batch_size),
                                            steps_per_epoch=(len(training_data) * 3) / batch_size,
                                            epochs=epochs,
                                            verbose=1,
                                            validation_data=batch_generator(validation_data, batch_size),
                                            validation_steps=(len(validation_data) * 3) / batch_size)


# Plot the training and validation losses for visualization of this session
plt.figure(1, figsize=(25, 15))
plt.subplot(211)
plt.plot(keras_history_object.history['loss'])
plt.plot(keras_history_object.history['val_loss'])
plt.title(loss)
plt.ylabel(loss)
plt.xlabel('Epoch')
plt.legend(['Training set', 'Validation set'], loc='upper right')
plt.show()

enter image description here