我将训练一个神经网络(例如,前馈网络),其中输出只是一个表示概率的实数值(因此在 [0, 1] 区间内)。我应该为最后一层(即输出节点)使用哪个激活函数?
如果我不使用任何激活函数而只输出tf.matmul(last_hidden_layer, weights) + biases
它可能会导致一些负输出,这是不可接受的,因为输出是概率,因此预测也应该是概率。如果我使用tf.nn.softmax
或tf.nn.softplus
模型在测试集中总是返回 0。有什么建议吗?
我将训练一个神经网络(例如,前馈网络),其中输出只是一个表示概率的实数值(因此在 [0, 1] 区间内)。我应该为最后一层(即输出节点)使用哪个激活函数?
如果我不使用任何激活函数而只输出tf.matmul(last_hidden_layer, weights) + biases
它可能会导致一些负输出,这是不可接受的,因为输出是概率,因此预测也应该是概率。如果我使用tf.nn.softmax
或tf.nn.softplus
模型在测试集中总是返回 0。有什么建议吗?
The easiest way is to just use the sigmoid activation as output, as this will squash any output range into the [0, 1] range. Then for training you can use either a mean square error or similar loss, or the binary cross entropy. In general the binary cross entropy might work better.