【问题标题】:Why is ReLU used in regression with Neural Networks?为什么 ReLU 用于神经网络的回归?
【发布时间】:2018-12-28 18:15:49
【问题描述】:

我正在关注官方的 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

【问题讨论】:

    标签: machine-learning neural-network keras regression activation-function


    【解决方案1】:

    隐藏层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少单元,网络的行为都会像简单的线性单元。 Andrew Ng 的这个短片很好地解释了这一点:Why do you need non-linear activation functions?

    在您的情况下,仔细观察,您会发现 final 层的激活函数不是隐藏层中的 relu,而是线性函数(即当您不指定任何内容时默认激活,例如此处):

    keras.layers.Dense(1)
    

    来自Keras docs

    密集

    [...]

    参数

    [...]

    activation:要使用的激活函数(参见activations)。如果您不指定任何内容,则不会应用任何激活(即“线性”激活:a(x) = x)。

    这确实是具有单个连续输出的回归网络所期望的。

    【讨论】:

    • 感谢您抽出宝贵时间回答我的问题,这是一个很棒的视频!
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2019-01-27
    • 2015-01-31
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多