Python实现softmax函数 :

PS:为了避免求exp(x)出现溢出的情况,一般需要减去最大值。

# -*-coding: utf-8 -*-import tensorflow as tf
import numpy as npdef softmax(x, axis=1):# 计算每行的最大值row_max = x.max(axis=axis)# 每行元素都需要减去对应的最大值,否则求exp(x)会溢出,导致inf情况row_max=row_max.reshape(-1, 1)x = x - row_max# 计算e的指数次幂x_exp = np.exp(x)x_sum = np.sum(x_exp, axis=axis, keepdims=True)s = x_exp / x_sumreturn sA = [[1, 1, 5, 3],[0.2, 0.2, 0.5, 0.1]]
A= np.array(A)
axis = 1  # 默认计算最后一维# [1]使用自定义softmax
s1 = softmax(A, axis=axis)
print("s1:{}".format(s1))#[2]使用TF的softmax
with tf.Session() as sess:tf_s2=tf.nn.softmax(A, axis=axis)s2=sess.run(tf_s2)print("s2:{}".format(s2))

C++实现Softmax函数

template<typename _Tp>
int softmax(const _Tp* src, _Tp* dst, int length)
{
//    double max = 0.0;
//    double sum = 0.0;
//
//    for (int i = 0; i<k; i++) if (max < x[i]) max = x[i];
//    for (int i = 0; i<k; i++) {
//        x[i] = exp(x[i] - max);
//        sum += x[i];
//    }
//    for (int i = 0; i<k; i++) x[i] /= sum;//为了避免溢出,需要减去最大值const _Tp max_value = *std::max_element(src, src + length);_Tp denominator{ 0 };for (int i = 0; i < length; ++i) {dst[i] = std::exp(src[i] - max_value);denominator += dst[i];}for (int i = 0; i < length; ++i) {dst[i] /= denominator;}return 0;
}
std::vector<float> output_vector;
std::vector<float> preds;
softmax(output_vector.data(), preds.data(),output_vector.size());

Python实现softmax函数相关推荐

  1. python softmax函数

    单维度 argmax,max函数: import numpy as np a = np.array([3, 1, 2, 4, 6, 1]) print(np.argmax(a)) 4print(a.m ...

  2. 使用python构建三层神经网络、softmax函数

    [机器学习]使用python手写三层神经网络 输入层到第一层的传递表示 第一层到第二层的传递表示 第二层到第三层的传递表示 全过程传递表示代码 输入层到第一层的传递表示 首先看输入层到第一层的第一个神 ...

  3. softmax函数到底是什么?——归一化指数函数,及其python实现

    softmax应该算是机器学习的入门数学知识了.softmax函数,它并不十分复杂,但又不是十分简单,总之这个函数就是很难去背诵下来,以致于每次你要写softmax的时候,都得搜一下才行.而每次搜索s ...

  4. 深度学习——用softmax函数来规范可变参数

    参考书籍:<深度学习--基于Python语言和TensorFlow平台> 'nn'是neural network的缩写,nn是TensorFlow的一个重要子类(包),其中的softmax ...

  5. python3实现softmax + 函数曲线绘制

    绘制softmax函数曲线 + python3实现 import numpy as np# 实现方法1 def softmax(x):return np.exp(x)/np.sum(np.exp(x) ...

  6. 深度学习:softmax函数

    一般回归问题的激活函数用的是恒等函数,二元分类问题用的是sigmoid函数,而多元分类问题可以使用softmax函数作为激活函数. softmax函数式为: softamx函数用Python实现: i ...

  7. Softmax函数与交叉熵

    Softmax函数 背景与定义 导数 softmax的计算与数值稳定性 Loss function 对数似然函数 交叉熵 Loss function求导 TensorFlow 方法1手动实现不建议使用 ...

  8. Python实现softmax回归

    1.Softmax回归概念 Softmax回归可以用于多类分类问题,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的 k\textstyle ...

  9. python调用子函数时参数传递问题

    场景: python建立子函数,在主程序中进行调用. 问题描述 将全局变量传入子函数,子函数中对局部变量进行修改导致全局变量发生. 示例代码: import numpy as np def softm ...

最新文章

  1. 手把手教你 MongoDB 的安装与详细使用(二)
  2. 计算机二级word保存要不要加.docx,计算机二级word实操题.docx
  3. 为什么说BCH是最安全的数字货币之一?
  4. duilib combo增加搜索栏_微信对话框上线搜一搜,搜索一步到位!
  5. css 选择器学习笔记
  6. Java 8默认方法可能会破坏您的(用户)代码
  7. curl post https_Linux命令cURL详解,并实现文件定时上传到ftp服务器的程序
  8. 关于三甲医院转行IT 医生家属说两句
  9. docker 远程访问_Docker 与其守护进程
  10. 墨刀 vs Axure RP
  11. 一种本地和云端相结合的语音识别系统及方法与流程
  12. c#抽取pdf文档标题(1)
  13. 云计算时代,观测产品Sunfire的成长史
  14. idea如何设置黑色主题
  15. (一)密码学之数论基础
  16. 移动警务系统建设方案
  17. 如何截图一张完整的表_wps2016表格太长怎么截图打印?
  18. 短视频平台还能这样赚钱?无需拍视频,每天能赚200多详细流程
  19. 个人总结:Mysql知识图谱
  20. ip_forward参数对Linux内核转发影响分析

热门文章

  1. pysvn安装及常用方法
  2. 《编写高质量代码改善JavaScript程序的188个建议》读书笔记
  3. 我新买的红米手机,新浪和360浏览器都能进,也能看电视,就是不能上手机QQ和微信...
  4. JSP -- JSP语法
  5. 如何对PHP程序中的常见漏洞进行攻击(上)
  6. JSP页面的继承(extends)
  7. Nhibernate 基础关系映射
  8. Docker操作笔记(二)容器
  9. H.264编码profile level控制
  10. 未解决-hive之drop 表分区失败