我正在使用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等)