版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011240016/article/details/85125030
神经网络可以用于分类和回归问题,但是最后在输出时需要根据情况来设定输出层的激活函数。一般来说,
- 回归问题:恒等函数
- 分类问题:
softmax
函数
https://blog.csdn.net/u011240016/article/details/85121601
恒等函数与softmax
函数
恒等函数:输入 = 输出
softmax函数
其中 是输入信号,即前层神经元的输出, 是第k个神经元的输出,n是输出层神经元的个数。
# softmax
def softmax(x):
return np.exp(x) / np.exp(x).sum()
a = np.array([0.3, 2.9, 4.0])
softmax(a)
softmax处理溢出问题
在分子分母上同时减去某个常数,为了防止溢出,我们可以将 设置为输入信号的最大值。
# 防止溢出
def softmax(x):
c = np.max(x)
exp_x = np.exp(x - c)
sum_exp_x = np.sum(exp_x)
return exp_x / sum_exp_x
a = np.array([1010, 1000, 990])
softmax(a) # array([9.99954600e-01, 4.53978686e-05, 2.06106005e-09])
Softmax函数的输出在0.0~1.0之间,且输出值的总和为1,所以可以将softmax函数的输出解释为概率
。
输出层的神经元数量
需要根据具体问题来定,比如手写数字识别,输出层就设置为10个神经元即可。
END.
完全参考:
《深度学习入门:基于Python的理论和实现》