为了给每个标签分配概率,然后使用这些概率对数据进行分类。我们需要使用softmax函数将logit转换为概率。
Softmax函数,或称归一化指数函数,是逻辑函数的一种推广。它能将一个含任意实数的K维的向量“压缩”到另一个K维实向量中,使得每一个元素的范围都在(0, 1)之间,并且所有元素的和为1。Sofemax维基百科
softmax的Python实现:
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
return np.exp(x) / np.sum(np.exp(x), axis=0)
你也可以直接使用TensorFlow内置的
tf.nn.softmax
下面是两个例子:
# logits is a one-dimensional array with 3 elements
logits = [1.0, 2.0, 3.0]
# softmax will return a one-dimensional array with 3 elements
print softmax(logits)
$ [ 0.09003057 0.24472847 0.66524096]
# logits is a two-dimensional array
logits = np.array([
[1, 2, 3, 6],
[2, 4, 5, 6],
[3, 8, 7, 6]])
# softmax will return a two-dimensional array with the same shape
print softmax(logits)
$ [
[ 0.09003057 0.00242826 0.01587624 0.33333333]
[ 0.24472847 0.01794253 0.11731043 0.33333333]
[ 0.66524096 0.97962921 0.86681333 0.33333333]
]