为什么使用激活功能会导致此网络的输出限制在范围(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]]
答案 0 :(得分:1)
sigmoid activation function是一种单调函数,它将实数值映射到有限范围内的另一个(通常为(0,1)或(-1,1))。 密集层中的激活函数在>强度乘以权重和添加偏差后应用。
有了这些前提,你的"坏"输出正是网络在使用sigmoid激活时应输出的内容。