作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注官方 TensorFlow with Keras 教程,但我被困在这里: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
最佳答案
在隐藏层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少个单元,网络的行为都会像一个简单的线性激活函数一样。单元。 Andrew Ng 在这个短视频中对此进行了很好的解释:Why do you need non-linear activation functions?
就您的情况而言,仔细观察,您会发现最终层的激活函数不是隐藏层中的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
).
这确实是具有单个连续输出的回归网络所期望的。
关于machine-learning - 为什么 ReLU 用于神经网络回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442459/
我是一名优秀的程序员,十分优秀!