神经网络中的输出层设计 python

#  输出层的设计
#  神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数

#  恒等函数和softmax函数
#  恒等函数会将输入原样输出,不加任何改动直接输出
#  softmax函数

import numpy as np

#  在计算机运行时必须考虑溢出问题,softmax的实现要进行指数函数的运算,但是此时的数非常大,超出48个字节的限制,也就是需要处理有效数的限制


def softmax(i):
    j = np.max(i)  # 溢出策略
    exa = np.exp(i - j)
    suma = np.sum(exa)
    sy = exa / suma
    return sy


a = np.array([0.3, 2.9, 4.0])
print(a)

exp_a = np.exp(a)  # 指定函数
print(exp_a)

sum_exp_a = np.sum(exp_a)
print(sum_exp_a)

y = exp_a / sum_exp_a
print(y)

print(softmax(a))

#  @TODO softmax 溢出运算实例
b = np.array([1010, 1000, 990])  #
# print(np.exp(b) / np.sum(np.exp(b)))
# c = np.max(b)  # max num
# print(c)
# print(b - c)
# print(np.exp(b - c) / np.sum(np.exp(b - c)))

#  @todo 使用溢出对付策略进行溢出运算
print(softmax(b))

#  softmax 的函数特征
#  softmax 函数的输出是 001.0 之间的 实数。输出综合是1,输出总和是1是重要的特质 正是因为有了这个性质,才把函数的输出解释为概率‘
#  [0.01821127 0.24519181 0.73659691] 通过softmax的函数结果我们可以通过概率的方法做事,比如 第一个类别是0.1%
#  一般而言,神经网络只是把输出值最大的神经元所对应的类别作为识别结果
#  使用softmax 函数,输出值最大的神经元的位置也不会变
c = np.array([0.3, 2.9, 4.0])
x = softmax(c)
print(x)
x_sum = np.sum(x)
print(x_sum)

#  求解机器学习的问题的步骤可以分为 学习和推理两个阶段,首先,在学习阶段进行模型的学习,然后在推理阶段,用学到的模型对未知的数据进行推理(分类)

#  输出层的神经元数量
#  输出层的神经元数量需要根据代解决的问题来决定,对于分类问题,输出层的神经元数量一般设定为类别的数量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P("Struggler") ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值