softmax函数与参数 (x, dim = -1,0,1,2)
创始人
2024-02-16 14:47:30
0

文章目录

      • softmax 函数简介
      • softmax 函数代码
        • numpy 实现
        • C++ 实现
        • 向量值直接求softmax

softmax 函数简介

经常用于预测与Multinoulli分布相关联的概率,定义为:
softmax⁡(xi)=exp⁡(xi)∑jnexp⁡(xj)soft\max(x_i) = \frac{\exp(x_i)}{\sum^n_j \exp(x_j)} softmax(xi​)=∑jn​exp(xj​)exp(xi​)​

Softmax函数:在数学,尤其是概率论和相关领域中,Softmax函数,或称归一化指数函数,是逻辑函数的一种推广。它能将一个含任意实数的K维的向量z的”压缩”到另一个K维实向量σ(z)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。

Softmax可作为神经网络中的输出层,用于多分类(sigmoid只能用于二分类, 使用Logistic函数来实现二分类问题,对于多分类问题,可以使用多项Logistic回归,该方法也被称之为softmax函数);Softmax还可以解决学习速度衰退的问题;softmax还可作为loss function。

softmax函数的导数如下
∂yi∂zj={yi(1−yi)if (i=j)−yiyjif (i≠j)\mathrm{ \frac{ \partial{y_i}}{ \partial{z_j}}} = \begin{cases} \mathrm{y_i(1-y_i)} & \text{ if } (i=j) \\ \mathrm{-y_iy_j} & \text{ if }(i \neq j) \end{cases} ∂zj​∂yi​​={yi​(1−yi​)−yi​yj​​ if (i=j) if (i​=j)​

softmax 函数代码

softmax(x,dim = -1,0,1,2) 【参数详解】

numpy 实现

# 对列求值
def softmax2d(x):max_ = np.max(x, axis=1, keepdims=True)e_x = np.exp(x - max_)sum = np.sum(e_x, axis=1, keepdims=True)f_x = e_x / sumreturn f_x# 对行求值
def softmax2d(x):max_ = np.max(x, axis=2, keepdims=True)e_x = np.exp(x - max_)sum = np.sum(e_x, axis=2, keepdims=True)f_x = e_x / sumreturn f_xdef softmax(f):f -= np.max(f)return np.exp(f) / np.sum(np.exp(f))

C++ 实现

#include 
#include 
#include "common.hpp"// ========================= Activation Function: softmax =====================
template
int activation_function_softmax(const _Tp* src, _Tp* dst, int length)
{const _Tp alpha = *std::max_element(src, src + length);_Tp denominator{ 0 };for (int i = 0; i < length; ++i) {dst[i] = std::exp(src[i] - alpha);denominator += dst[i];}for (int i = 0; i < length; ++i) {dst[i] /= denominator;}return 0;
}

向量值直接求softmax

def chw2hwc(vector):assert len(vector) == channel * height * width"""### 原始图像(BGR)imgbgr = np.array([[[12, 10, 14], [18, 0, 14], [54, 23, 65], [54, 32, 65]],[[11, 23, 16], [25, 23, 19], [12, 9, 14], [21, 65, 65]],[[36, 15, 47], [52, 7, 14], [74, 23, 85], [54, 32, 65]],[[12, 3, 14], [12, 7, 14], [12, 69, 89], [54, 32, 65]],], dtype=np.uint8)height, width, channel = imgbgr.shape### 图像格式HWC2CHW (可直接使用 transpose((1, 2, 0))),这里用来展示数据转换流程b, g, r = cv2.split(imgbgr)list_arr = np.array([b, g, r]).reshape(-1)### 展示CHW 向量vector = [12 18 54 54 11 25 12 21 36 52 74 54 12 12 12 54 10  0 23 32 23 23  9 65 15  7 23 32  3  7 69 32 14 14 65 65 16 19 14 65 47 14 85 65 14 14 89 65]"""dst_mat = np.zeros((height, width, channel), dtype=np.uint8)for i in range(height * width):dst_mat[i//width, i % width, 0] = vector[0 * height * width + i]dst_mat[i//width, i % width, 1] = vector[1 * height * width + i]dst_mat[i//width, i % width, 2] = vector[2 * height * width + i]return dst_matdef chw2hwc_and_softmax2(vector):vector = vector.reshape((channel, width*height))vector = vector.Tfor i in vector:print(softmax(i))

相关内容

热门资讯

服务成渝发展 北京市竞天公诚(... 12月19日,“国际视野 渝见未来——竞天公诚重庆分所开业庆典暨2025西南新格局企业创新发展研讨会...
小崔律师的自媒体之路:从单打独... 临近年底,小崔律师参与了很多交流活动,大家对我的自媒体获客途径比较感兴趣,都鼓励我能够写一篇文章系统...
数字政通中标:贵州省司法厅执法... 证券之星消息,根据天眼查APP-财产线索数据整理,根据贵州大数据产业集团有限公司12月18日发布的《...
知名短剧女演员承认对助理动手并... 近日,知名短剧女演员被曝和助理发生肢体冲突,双方冲突录音曝光。两人疑因工资结算起争执。 12月21日...
突发政策利好,资金涌入这个赛道... L3级自动驾驶车型获得准入,南向资金涌入自动驾驶板块,均胜电子、赛力斯、曹操出行、佑驾创新等获大幅加...
靠谱又性价比高的离婚律师推荐:... 在离婚纠纷日益复杂的当下,寻找一位靠谱且性价比高的离婚律师至关重要。离婚案件不仅涉及情感纠葛,更关乎...
海南封关免税黄金与热带鲜果成游... 封面新闻记者 杨芮雯 12月18日,海南正式封关运作,“一线放开、二线管住”的政策红利全面释放,游客...
原创 贵... 贵州省遵义市一个交付仅一年的新小区,自来水离奇变蓝持续大半年,业主们反映“蓝得看不到底”。更令人揪心...
朝阳发布智能机器人“政策包+场... 12月19日,首届朝阳智能机器人生态大会暨Robo Summit机器人发展论坛(第二期)在国家速滑馆...
解金融之困 传调解之暖——“总... 小微企业贷款逾期,如何既保债权又留生机? 三车连撞纠纷棘手,怎样快速厘清责任? 金融消费遇“低息陷阱...