【问题标题】:Why is tensorflow output restricted to (0,1) when using a non linear activation function为什么使用非线性激活函数时张量流输出限制为(0,1)
【发布时间】:2017-11-21 22:39:47
【问题描述】:

当使用线性激活函数给出预期值时,为什么使用激活函数会导致该网络的输出限制在 (0,1) 范围内?我的输出中的偏差值在哪里?在激活函数之后添加偏置,对吗?

network = tf.layers.dense(inputs=ins, units=1, activation=tf.nn.sigmoid)

培训:

inputs = [[0],[1]]
outputs = [[0],[2]]
for i in range(500):
    print(sess.run(network, feed_dict={inputType: inputs}))
    sess.run(fetches=[train_op, loss], feed_dict={inputType: inputs, outputType: outputs})

错误输出示例(使用 sigmoid):

[[ 0.17]
 [ 0.98]]

良好输出示例(没有激活函数):

[[ 1.01]
 [ 1.98]]

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    sigmoid activation function 是一个单调函数,可将一个实数值映射到有限范围内的另一个实数值(通常为 (0,1) 或 (-1,1))。 密集层中的激活函数与权重相乘和偏置相加后应用。

    在这些前提下,您的“坏”输出正是网络在使用 sigmoid 激活时应该输出的内容。

    【讨论】:

    • 我明白了。我总是被教导将偏差添加到激活函数输出中。那如何实现?
    • 您必须自己实现层逻辑并颠倒操作顺序
    猜你喜欢
    • 2020-10-06
    • 2018-12-10
    • 2018-03-04
    • 2018-11-01
    • 2021-09-25
    • 2019-06-12
    • 2014-08-08
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多