Pop*_*rin 5 regression machine-learning neural-network keras activation-function
我正在关注带有 Keras 教程的官方 TensorFlow,但我被困在这里:预测房价:回归 - 创建模型
为什么将激活函数用于预测连续值的任务?
代码是:
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
Run Code Online (Sandbox Code Playgroud)
在隐藏层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少单元,网络都将表现得像一个简单的线性单元。Andrew Ng 在这个简短的视频中很好地解释了这一点:为什么需要非线性激活函数?
在您的情况下,更仔细地观察,您会发现最后一层的激活函数不是relu隐藏层中的激活函数,而是线性函数(这是您未指定任何内容时的默认激活,例如此处) :
keras.layers.Dense(1)
Run Code Online (Sandbox Code Playgroud)
来自Keras 文档:
稠密
[...]
参数
[...]
activation:要使用的激活函数(请参阅activations)。如果您未指定任何内容,则不会应用任何激活(即“线性”激活:)
a(x) = x。
这确实是具有单个连续输出的回归网络所期望的。