当使用非线性激活函数时,为什么张量流输出限制为(0,1)

时间:2017-11-21 14:25:16

标签: tensorflow

为什么使用激活功能会导致此网络的输出限制在范围(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]]

1 个答案:

答案 0 :(得分:1)

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

有了这些前提,你的"坏"输出正是网络在使用sigmoid激活时应输出的内容。