Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >矢量化softmax梯度

矢量化softmax梯度
EN

Stack Overflow用户
提问于 2019-12-11 13:30:00
回答 2查看 1K关注 0票数 1

我有一个softmax层(只有激活本身,没有将输入乘以权重的线性部分),我想让它成为一个反向传递。

我在上找到了很多关于它的教程/答案,但它们似乎都使用X作为(1, n_inputs)矢量。我想使用它作为(n_samples, n_inputs)数组,并且仍然有一个正确的向前/向后传递的矢量化实现。

我已经编写了以下向前传递,对每一行/样本的输出进行标准化(是否正确?):

代码语言:javascript
运行
AI代码解释
复制
import numpy as np

X = np.asarray([
    [0.0, 0.0],
    [0.0, 1.0],
    [1.0, 0.0],
    [1.0, 1.0]], dtype=np.float32)

def prop(self, X):
    s = np.exp(X)
    s = s.T / np.sum(s, axis=1)
    return s.T

它为我提供了前向传播(包括其他层)的最终结果:

代码语言:javascript
运行
AI代码解释
复制
Y = np.asarray([
       [0.5       , 0.5       ],
       [0.87070241, 0.12929759],
       [0.97738616, 0.02261384],
       [0.99200957, 0.00799043]], dtype=np.float32))

因此,这是softmax的输出,如果它是正确的。现在,我应该如何写向后传递?

我已经推导出softmax的导数为:

1)如果i=jp_i*(1 - p_j)

2)如果i!=j-p_i*p_j

哪里

我试着计算导数为:

代码语言:javascript
运行
AI代码解释
复制
ds = np.diag(Y.flatten()) - np.outer(Y, Y) 

但是它导致了8x8矩阵,这对于下面的反向传播没有意义...正确的写法是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-06-16 01:18:02

我一直在处理同样的问题,最终想出了一种方法来向量化softmax Jacobian的批量实现。这是我自己想出来的,所以我不确定这是不是最好的方法。这是我的想法:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
from scipy.special import softmax

def Jsoftmax(X):
    sh = X.shape
    sm = softmax(X, axis = 1)
    DM = sm.reshape(sh[0],-1,1) * np.diag(np.ones(sh[1])) # Diagonal matrices
    OP = np.matmul(sm.reshape(sh[0],-1,1), sm.reshape(sh[0],1,-1)) # Outer products
    Jsm = DM - OP
    return Jsm

它产生了一个(n_samples, n_inputs, n_inputs)-shaped数组,我认为它可以通过np.matmul函数在反向传播中使用,以正确地预乘dJ_dA数组。

应该注意的是,softmax几乎完全用作最后一层,并且通常具有交叉进入损失目标函数。在这种情况下,目标函数相对于softmax输入的导数可以更有效地找到为(S - Y)/m,其中m是批次中的示例数量,Y是批次的标签,S是softmax输出。这在下面的link中进行了解释。

票数 2
EN

Stack Overflow用户

发布于 2019-12-12 06:50:14

在编写softmax函数时,我发现这个问题非常有用:Softmax derivative in NumPy approaches 0 (implementation)。希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59286911

复制
相关文章
Android中Java和JavaScript交互
Android中Java和JavaScript交互 Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口。 客户端和网页端编写调用对方的代码。 本例代码 为了便于讲解,先贴出全部代码 Java代码
用户1289394
2018/02/26
1.6K0
Android中Java和JavaScript交互
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。
技术小黑屋
2018/09/04
9610
Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式
WebView如果作为简单的网页浏览器,对于一般的浏览行为来说,已经足够了。可做为企业开发者,你的App通常要嵌入自家公司的网页,如此一来,还得考虑App与Web之间的消息传递,这就涉及到App的原生代码与Web的JS代码之间的通信了。 App与Web做为消息通信的双方,具体的交互行为分为四类,包括:App通知Web执行某项动作、App主动从Web获取信息、Web通知App执行某项动作,Web主动从App获取信息,这四种行为详细说明如下:
aqi00
2019/01/18
1.4K0
Android WebView
src=>main=>assets目录下创建news_top.html和news_bottom.html
码客说
2020/05/09
8170
Android webview 与 js(Vue) 交互
项目写好后,执行 npm run serve 命令启动项目,启动成功后会在命令行看到两个地址:
solocoder
2022/04/06
10.5K0
Android webview 与 js(Vue) 交互
JSBridge 原理
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
全栈程序员站长
2022/11/15
2.3K0
Android开发笔记(六十四)网页加载与JS调用
如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法。WebView就是Android上的一个浏览器内核,可自动展示web页面,并且实现js代码的相互调用。 下面是WebView的常用方法: getSettings : 获取浏览器的web设置信息。 addJavascriptInterface : 添加本地的js代码接口。 removeJavascriptInterface : 移除本地的js代码接口。在4.0至4.2的Android系统上,Webview自己增加了searchBoxJavaBredge_,可能被黑客利用导致远程代码执行。为阻止该漏洞,需要手工移除接口searchBoxJavaBredge_。代码如下所示:
aqi00
2019/01/18
6.5K0
android webview 漏洞
webview.getSettings().setJavaScriptEnabled(true) 设置WebView是否允许执行JavaScript脚本,默认false,不允许 API <= 17 需要注意的是在 API17 版本之后,需要在被调用的地方加上 @addJavascriptInterface 约束注解,因为不加上注解的方法是没有办法被调用的
tea9
2022/07/16
1.4K0
android WebView总结
浏览器控件是每一个开发环境都具备的,这为马甲神功提供了用武之地。windows的有webbrowser,android和ios都有webview。仅仅是其引擎不同,相对于微软的webbrowser。android及ios的webview的引擎都是webkit,对Html5提供支持。本篇主要介绍android的webview之强大。
全栈程序员站长
2022/07/14
9030
android WebView总结
Carson带你学Android:你要的WebView与 JS 交互方式都在这里了
步骤1:将需要调用的JS代码以.html格式放到src/main/assets文件夹里
Carson.Ho
2022/01/21
9290
Carson带你学Android:你要的WebView与 JS 交互方式都在这里了
Android:你要的WebView与 JS 交互方式 都在这里了
对于Android调用JS代码的方法有2种: 1. 通过WebView的loadUrl() 2. 通过WebView的evaluateJavascript()
Carson.Ho
2019/02/22
7.2K0
小白必看,JSBridge 初探
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
政采云前端团队
2020/02/25
2.6K0
小白必看,JSBridge 初探
小白必看,JSBridge 初探
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
前端劝退师
2020/02/26
1.5K0
小白必看,JSBridge 初探
关于原生+WebView js交互、数据传输问题
原生能接收到webView内控件点击事件,以至拿到点击事件传过来数据 1、定义一个接口 public interface WebHomeOnClickInterface { void showStorePicker(); //显示选择框的事件 void cancelStorePicker(); //选择框消失的事件 } 2、定义一个类使用该接口 public class JsInterationHome { WebHomeOnClickInterface
听着music睡
2021/10/25
9790
H5和移动端通信
弹窗包括:alert、confirm、prompt, 和url拦截类似都在回调方法中处理
无忧366
2022/10/21
1.4K0
Android WebView获取cookie
重写WebViewClient方法 public class MyWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView webview, String url) { webview.loadUrl(url); return true; } public void onPageFinished(WebView view, String
yechaoa
2022/06/10
5.2K1
【Android笔记】浅谈WebView
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
易寒
2021/12/27
1K0
利用Android Webview漏洞
https://github.com/t4kemyh4nd/vulnwebview
tea9
2023/08/24
6910
利用Android Webview漏洞
JSBridge小科普
做Hybird APP开发的同学,应该对JSBridge不陌生,它用于H5页面和Native(Android或者iOS)通信。常用的三方库如Dsbridge系列(https://github.com/wendux/DSBridge-Android)。那么,你知道JSBridge到底是如何在两端进行通信的吗?
娜姐
2020/09/22
2.9K0
JSBridge小科普
点击加载更多

相似问题

使用Android WebView EvaluateJavascript

17

OpenLayers Android WebView Uncaught

13

没有调用Android WebView evaluateJavaScript回调。

15

Android WebView.evaluateJavascript()与不明参考误差

12

EvaluateJavascript使用API级别18的Android WebView

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档