softmax函数python实现

在实现一个神经网络项目落地代码,使用matlab训练完后,为了配合其他问题,使用python进行落地,实现DNN的正向计算,在网上看了一大堆softmax函数的实现,发现所有人都是单样本去计算或者循环去计算矩阵,心里默默吐槽,怎么都是这样写,就不能来个正常的例子,一行行这样算都提高不了效率。看来ctrl+c是解决不了问题了,还是自己动手来吧。

首先看下softmax函数公式:

不多说,直接上代码:

#一列一个样本
def softmax_0(x):
    e = np.exp(x)
    #对列求和
    x_sum = np.sum(e,axis=0)[np.newaxis,:]
    
    b = np.tile(x_sum,(np.shape(x)[0],1))
    ret = e/b
    return ret

#一行一个样本
def softmax_1(x):
    e = np.exp(x)
    #对行求和
    x_sum = np.sum(e,axis=1)[:, np.newaxis]
    
    b = np.tile(x_sum,(1,np.shape(x)[1]))
    ret = e/b
    return ret


x1 = np.random.rand(4,2)
y1 = softmax_0(x1)

x2 = np.random.rand(2,4)
y2 = softmax_1(x2)

本人习惯一列一个样本,但可能不同人不同习惯,根据个人喜好吧,一行一个样本和一列一个样本都实现了,可直接使用。

祝大家劳动节快乐!!收工。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值