Machine learning 为什么ReLu激活对我的数据无效?

Machine learning 为什么ReLu激活对我的数据无效?,machine-learning,tensorflow,neural-network,Machine Learning,Tensorflow,Neural Network,我正在用tensorflow训练一个神经网络。我正试图使用tf.nn.relu作为我的激活功能,但网络无法学习。如果我在0-1之间缩放数据并使用sigmoid,它将非常好地学习。我知道我的relu功能可能会立即失效。为什么会发生这种情况?我如何解决 设置: layer_1 = tf.layers.dense(tf_x, neurons_no, tf.nn.relu) ... # all other hidden + output layers in similar way loss = tf.

我正在用tensorflow训练一个神经网络。我正试图使用tf.nn.relu作为我的激活功能,但网络无法学习。如果我在0-1之间缩放数据并使用sigmoid,它将非常好地学习。我知道我的relu功能可能会立即失效。为什么会发生这种情况?我如何解决

设置:

layer_1 = tf.layers.dense(tf_x, neurons_no, tf.nn.relu)
... # all other hidden + output layers in similar way

loss = tf.losses.mean_squared_error
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step, decay_steps, decay_rate, staircase=True)
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(loss, global_step=global_step)
为什么我要使用relu而不是sigmoid:因为我的数据的“正常”范围不在0-1之间,所以我更喜欢不受该范围限制的激活功能

我的数据的外观: 回归设置: 3个输入值:x1、x2、x3。范围在0-0.3之间 1输出值:y。范围未知,但为0或更大(例如50、517、2001等)

沿一个x维的示例图形:

您是否尝试过不同的基本学习率?另外,我尝试使用
tf.train.AdamOptimizer
而不是
tf.train.GradientDescentOptimizer
您是否已经使用了批处理规范化层?如果没有,您是否尝试过将数据标准化为均值0,方差1?谢谢,这很有帮助!我换了AdamOptimizer,不断降低学习速度,在某个时候它就起作用了。您能否简单地解释一下为什么建议使用AdamOptimizer?与解释相联系也就足够了。