为什么 ReLU 用于神经网络的回归?
Why is ReLU used in regression with Neural Networks?
我正在关注带有 Keras 的官方 TensorFlow 教程,但我被困在这里:Predict house prices: regression - Create the model
为什么将激活函数用于预测连续值的任务?
密码是:
def build_model():
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu,
input_shape=(train_data.shape[1],)),
keras.layers.Dense(64, activation=tf.nn.relu),
keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
return model
在 hidden 层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少个单元,网络都会表现就像一个简单的线性单元。 Andrew Ng 在这段简短的视频中很好地解释了这一点:Why do you need non-linear activation functions?
在您的情况下,仔细观察,您会发现 final 层的激活函数不是隐藏层中的 relu
,而是线性的(这是当你没有指定任何东西时的默认激活,就像这里一样):
keras.layers.Dense(1)
来自Keras docs:
Dense
[...]
Arguments
[...]
activation: Activation function to use (see activations). If you don't specify anything, no activation is applied (ie. "linear" activation: a(x) = x
).
这确实是具有单个连续输出的回归网络所期望的。
我正在关注带有 Keras 的官方 TensorFlow 教程,但我被困在这里:Predict house prices: regression - Create the model
为什么将激活函数用于预测连续值的任务?
密码是:
def build_model():
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu,
input_shape=(train_data.shape[1],)),
keras.layers.Dense(64, activation=tf.nn.relu),
keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
return model
在 hidden 层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少个单元,网络都会表现就像一个简单的线性单元。 Andrew Ng 在这段简短的视频中很好地解释了这一点:Why do you need non-linear activation functions?
在您的情况下,仔细观察,您会发现 final 层的激活函数不是隐藏层中的 relu
,而是线性的(这是当你没有指定任何东西时的默认激活,就像这里一样):
keras.layers.Dense(1)
来自Keras docs:
Dense
[...]
Arguments
[...]
activation: Activation function to use (see activations). If you don't specify anything, no activation is applied (ie. "linear" activation:
a(x) = x
).
这确实是具有单个连续输出的回归网络所期望的。