首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何应用软件最大梯度在支柱中的应用

如何应用软件最大梯度在支柱中的应用
EN

Data Science用户
提问于 2018-03-26 15:54:41
回答 1查看 22.8K关注 0票数 8

最近我做了一个家庭作业,我不得不学习一个MNIST 10位数分类的模型。HW有一些脚手架代码,我应该在这个代码的上下文中工作。

我的家庭作业很有效/通过了测试,但现在我尝试从头开始(我自己的nn框架,没有hw脚手架代码),我不得不在后台步骤中应用softmax的宏伟功能,甚至认为hw脚手架代码可能不正确。

hw让我使用他们所说的‘软最大损失’作为nn中的最后一个节点。这意味着,由于某种原因,他们决定将softmax激活与交叉熵损失结合在一起,而不是将softmax作为激活函数和交叉熵作为单独的损失函数。

然后,hw损失函数看起来如下(由我编辑的最低限度):

代码语言:javascript
运行
AI代码解释
复制
class SoftmaxLoss:
    """
    A batched softmax loss, used for classification problems.
    input[0] (the prediction) = np.array of dims batch_size x 10
    input[1] (the truth) = np.array of dims batch_size x 10
    """
    @staticmethod
    def softmax(input):
        exp = np.exp(input - np.max(input, axis=1, keepdims=True))
        return exp / np.sum(exp, axis=1, keepdims=True)

    @staticmethod
    def forward(inputs):
        softmax = SoftmaxLoss.softmax(inputs[0])
        labels = inputs[1]
        return np.mean(-np.sum(labels * np.log(softmax), axis=1))

    @staticmethod
    def backward(inputs, gradient):
        softmax = SoftmaxLoss.softmax(inputs[0])
        return [
            gradient * (softmax - inputs[1]) / inputs[0].shape[0],
            gradient * (-np.log(softmax)) / inputs[0].shape[0]
        ]

正如你所看到的,在前面它做了softmax(x)然后交叉熵损失。

但在后台,它似乎只做交叉熵的导数,而不做softmax的导数。Softmax就是这样留下的。

不也应该使用softmax的导数相对于softmax?

的输入

假设它应该采用softmax的导数,我不确定这个hw是如何通过测试的.

现在,在我自己从头开始的实现中,我创建了softmax和交叉熵分离的节点,类似于这样(p和t代表预测和真理):

代码语言:javascript
运行
AI代码解释
复制
class SoftMax(NetNode):
    def __init__(self, x):
        ex = np.exp(x.data - np.max(x.data, axis=1, keepdims=True))
        super().__init__(ex / np.sum(ex, axis=1, keepdims=True), x)

    def _back(self, x):
        g = self.data * (np.eye(self.data.shape[0]) - self.data)
        x.g += self.g * g
        super()._back()

class LCE(NetNode):
    def __init__(self, p, t):
        super().__init__(
            np.mean(-np.sum(t.data * np.log(p.data), axis=1)),
            p, t
        )

    def _back(self, p, t):
        p.g += self.g * (p.data - t.data) / t.data.shape[0]
        t.g += self.g * -np.log(p.data) / t.data.shape[0]
        super()._back()

正如你所看到的,我的交叉熵损失(LCE)和hw中的一样的导数,因为这是损失本身的导数,还没有进入softmax。

但是那样的话,我仍然需要做softmax的导数来用损失的导数来链接它。这就是我被困的地方。

对于softmax,定义为:

衍生产品通常被定义为:

但是,我需要一个导数,它的大小与softmax的输入相同,在本例中是batch_size x 10,所以我不确定如何将上述结果应用于10个组件,因为它意味着对于所有输出(所有组合)或所有输入,我都会有所不同。

以矩阵形式出现。

EN

回答 1

Data Science用户

回答已采纳

发布于 2018-04-01 14:28:11

经过进一步的研究,我发现:

  1. 作业实现结合了软件最大和交叉熵损失作为一种选择,而我选择保持softmax独立作为激活函数也是有效的。
  2. 家庭作业的实现确实缺少了反支柱通道的softmax的导数。
  3. softmax相对于其输入的梯度实际上是每个输出相对于每个输入的部分:

因此,对于向量(梯度)形式:

在我的矢量化numpy代码中,简单地是:

代码语言:javascript
运行
AI代码解释
复制
self.data * (1. - self.data)

其中,self.data是输入的softmax,以前是从前传计算的。

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

https://datascience.stackexchange.com/questions/29735

复制
相关文章
cmake:在Makefile中运行ant脚本
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51832822
10km
2019/05/25
1.8K0
【Apache Ant】ANT解析以及ANT在myEclipse中的使用
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
谙忆
2021/01/21
1.5K0
【Apache Ant】ANT解析以及ANT在myEclipse中的使用
在HTML中如何使用CSS?
一、前言 在 HTML 中使用 CSS,包括内联式、内嵌式、链接式和导入式。 二、分类 2.1 内联式 内联式是所有样式应用方式中最为直接的一种,它通过对 HTML 标记使用 属性,将 CSS 代码直接写在其中。 内联式是最简单、直接的 CSS 使用方法,但它的针对性很明显,只能作用于当前标记,造成代码冗余,维护比较困难。 2.2 内嵌式 内嵌式与内联式使用方法不同,它将 CSS 代码写在 标记之间,并需要采用 标记进行声明。 使用内嵌式 CSS 用法时 CSS 代码将被集中放在 标记中,这样方便查
企鹅号小编
2018/02/01
8.7K0
Ant 执行 YUICompressor
发布 JavaScript 的时候,无论从代码保护还是提高性能角度,都应该对代码进行压缩,去除重叠的空白分隔符,混淆变量。雅虎交互(YUI)提供了非常强大的压缩工具,对 .js 文件和 .css 文件都有效。这里所说明的情况,是用 Ant 直接启动压缩任务。
全栈程序员站长
2022/09/09
3540
【shell脚本】$ 在shell脚本中的使用
注释:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
码缘
2019/07/01
6.3K0
JSON 在JavaScript 中的使用。
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
愷龍
2022/10/06
10.1K0
Ant中的SVN 使用
最近在调整SDK的打包脚本的时候重新树立了一下ant下面的SVN命令的用法。先简单列举下,以后有精力再慢慢整理细说吧。 svn copy 多用于生成当前版本的tag <arg line="copy SVN_URL1 SVN_URL2 --no-auth-cache --non-interactive --username USERNAME --password PASSWORD -m MSG" /> </exec> svn add 多用于提交在版本打包过程生成的重要文件,例如代码混淆生成的mapp
子勰
2018/05/22
9010
YUI3 CSS框架学习
改变最大的我觉得是Grids部分,YUI2中以模版的方式提供给我们调用,功能中多选项也很多,而且配合Grid Build Tool,可以快速的生成复杂的页面结构。但正因为其复杂,所以在一些需要自定义比较多的场景下使用起来就比较痛苦。YUI3一改以往的复杂性,仅仅是提供简单的页面逻辑结构单元,我们可以自由的定义页面的宽度,结构单元的分布。非常简单。当然,目前还处于Beta阶段,不知道后续会不会变的越来越强大。
大江小浪
2018/07/25
6630
YUI3 CSS框架学习
ant的安装和使用
  1.1 添加环境变量:ANT_HOME=D:\software\ant\apache-ant-1.10.1
全栈程序员站长
2022/09/07
5050
ant的安装和使用
Ant+JSDocTookit生成Javascript文档
需要备上下面三样东西 JSDocTookit http://code.google.com/p/jsdoc-toolkit/
meteoric
2018/11/15
8870
ant+yuicompressor 合并、压缩脚本与样式
我使用的是Eclipse编写build.xml,你可以用其它的编辑器,前提是你已经安装了ant
meteoric
2018/11/15
8680
如何使用LinkFinder在JavaScript文件中查找网络节点
LinkFinder是一款功能强大的Python脚本,在该工具的帮助下,广大研究人员可以轻松在JavaScript文件中发现和扫描网络节点及其相关参数。这样一来,渗透测试人员和漏洞猎人将能够快速在测试的目标网站伤收集新的隐藏节点了。
FB客服
2023/08/08
5280
如何使用LinkFinder在JavaScript文件中查找网络节点
java: ant 脚本示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!--basedir是从build.xml所在的目录为基础算起的--> 4 <project nam
菩提树下的杨过
2018/01/24
8700
在 JavaScript 中如何克隆对象?
我们假设一个变量 name 具有一个与之关联的原始值(number,string,boolean,undefined 和null)。 如果我们将此变量 name 复制到另一个变量name2 ,则原始变量的任何修改都不会影响到第二个变量,因为它们是原始值。
前端小智@大迁世界
2022/06/15
4.7K0
分享 73 个让你事半功倍的 NPM 包
英文 | https://dev.to/madza/73-awesome-npm-packages-for-productivity-19p8
前端达人
2022/03/25
5.4K0
如何开发YUI3的扩展
YUI是Yahoo发布的一个JS框架,虽然不如jQuery简单,但是如果你是要做一些复杂的事情的时候,有一个合适量级的框架还是能有用不少。
大江小浪
2018/07/25
1.2K0
73个超棒且可提高生产力的 NPM 包
在这里,我整理了一些我最喜欢的 NPM 包的列表。我也将它们分类,因此信息更加结构化,更易于浏览。
ConardLi
2020/11/10
4.6K0
73个超棒且可提高生产力的 NPM 包
Webpack4 性能优化实践
在使用 Webpack 时,如果不注意性能优化,可能会产生性能问题,会导致在开发体验上不是非常丝滑,性能问题主要是编译速度慢,打包体积过大,因此性能优化也主要从这些方面来分析。本文主要是自己平时的工作积累和参考别人的文章,而进行总结,基于 Webpack4 版本。
发声的沉默者
2021/06/14
1.2K0
Webpack4 性能优化实践
点击加载更多

相似问题

如何在用于javascript的Ant构建脚本中使用YUI压缩器

20

无法使用Ant和YUI压缩器应用JavaScript压缩

37

yui压缩器是如何压缩javascript和css文件的呢?

31

关于YUI压缩器和About脚本

14

YUI压缩器在构建时压缩和更换

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文