博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用Python计算Softmax?
阅读量:7119 次
发布时间:2019-06-28

本文共 1120 字,大约阅读时间需要 3 分钟。

Softmax函数,或称归一化指数函数,它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量\(\sigma{(z)}\)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出:

\[ \sigma{(z)_j}=\frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}} \quad for \, j = 1, ..., K\]

输入向量 [1,2,3,4,1,2,3]对应的Softmax函数的值为[0.024,0.064,0.175,0.475,0.024,0.064,0.175]。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。

这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。

下面是使用Python进行函数计算的示例代码:

import mathz = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]z_exp = [math.exp(i) for i in z]  print(z_exp)  # Result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09] sum_z_exp = sum(z_exp)  print(sum_z_exp)  # Result: 114.98 softmax = [round(i / sum_z_exp, 3) for i in z_exp]print(softmax)  # Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]
[2.718281828459045, 7.38905609893065, 20.085536923187668, 54.598150033144236, 2.718281828459045, 7.38905609893065, 20.085536923187668]114.98389973429897[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

Python使用numpy计算的示例代码:

import numpy as npz = np.array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0])print(np.exp(z)/sum(np.exp(z)))
[0.02364054 0.06426166 0.1746813  0.474833   0.02364054 0.06426166 0.1746813 ]

转载地址:http://gdiel.baihongyu.com/

你可能感兴趣的文章
Spring Data —— 完全统一的API?
查看>>
[翻译] JTBorderDotAnimation
查看>>
浏览器兼容性小记-DOM篇(二)
查看>>
【Oracle】lsnrctl reload 命令简介
查看>>
091023 T GIX4 项目中的 智能部署 和 智能客户端
查看>>
Mondrian and OLAP
查看>>
【音乐分享】Let Me Go
查看>>
java写一个爬虫
查看>>
Drill官网文档翻译六:存储插件的注册
查看>>
poj 1502 单源最短路径
查看>>
CUDNN v3特性
查看>>
为什么C# md5 32位加密算法,密码明文会出现31位
查看>>
怎么通过java去调用并执行shell脚本以及问题总结
查看>>
Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
查看>>
mysql分析函数的实现
查看>>
Android应用程序插件化研究之DexClassLoader
查看>>
如何站在双11的肩膀上 详解阿里云企业级互联网架构
查看>>
记一次Spring Batch完整入门实践
查看>>
小程序登录及用户信息和手机号的获取
查看>>
[Vue] Computed property "XXX" was assigned to but it has no setter.
查看>>