精华内容
下载资源
问答
  • sigmoid+交叉熵为什么更好,这困扰了我大半天的问题,网上所有的教程都直接给出了最后一部的结果,我手推了好久,终于醒悟,下面附上详细的推导过程: 首先,我们定义并简化一下公式: [a=\sum_{i=0}^{N} ( Wx^{...

    sigmoid+交叉熵为什么更好,这是困扰了我大半天的问题,网上所有的教程都直接给出了最后一步的结果,我手推了好久,终于醒悟,下面附上详细的推导过程:

    我们定义并简化一下公式:
    1、网络的最后一层输出为:z=(Wx+b)z=(Wx^{}+b)其中W为权重,b为偏置,严格来说里面的参数都是矩阵,不过我们计算就当作单独的参数,过程是一样的。
    2、我们需要在输出后面加上sigmoid损失函数:
    a=g(z)=Sigmoid(z)=11+eza = g(z)=Sigmoid(z)=\frac{1}{1+e^{-z}}
    3、上式的a就是我们最终的输出值,与期望的输出值y,也就是真实值,共同计算损失函数。这里我们使用交叉熵损失函数:
    L=CE(a,y)=[ylna+(1y)ln(1a)]L=CE(a,y)=-[y\ln a+(1-y)\ln(1-a)]

    好了,这就是正向传播的一个输出,我们目的是反向传播得到W和b的梯度LW\frac{\partial L}{\partial W},Lb\frac{\partial L}{\partial b}由于LW=Lzx\frac{\partial L}{\partial W}=\frac{\partial L}{\partial z}*x ,Lb=Lz\frac{\partial L}{\partial b}=\frac{\partial L}{\partial z},所以我们就直接求Lz\frac{\partial L}{\partial z}

    首先,把z代入最后的损失函数里面,式中g(z)就是sigmoid激活函数:L=CE(g(z),y)=[ylng(z)+(1y)ln(1g(z))]L=CE(g(z),y)=-[y\ln g(z)+(1-y)\ln(1-g(z))]
    对z求偏导:
    Lz=[yg(z)g(z)+(1y)g(z)(1g(z))]\frac{\partial L}{\partial z}=-[\frac{y*g'(z)}{g(z)}+\frac{-(1-y)*g'(z)}{(1-g(z))}]
    里面两项合并:
    Lz=[yg(z)(1g(z))(1y)g(z)g(z))g(z)(1g(z))]\frac{\partial L}{\partial z}=-[\frac{y*g'(z)*(1-g(z))-(1-y)*g'(z)*g(z))}{g(z)*(1-g(z))}]
    展开,合并之后,得到:
    Lz=(g(z)y)g(z)g(z)(1g(z))\frac{\partial L}{\partial z}=\frac{(g(z)-y)*g'(z)}{g(z)*(1-g(z))}
    之前推到这一步,就进展不下去了。但是sigmoid还有一个重要的性质,那就是sigmoid函数的导数,Sigmoid(x)=Sigmoid(x)(1Sigmoid(x))Sigmoid'(x)=Sigmoid(x)*(1-Sigmoid(x)),我们这里的g(z)函数就是Sigmoid,仔细看一下,这个式子的分母,g(z)(1g(z))=g(z)g(z)*(1-g(z))=g'(z)
    所以最后得到的公式为:Lz=g(z)y\frac{\partial L}{\partial z}=g(z)-y
    使用sigmoid+交叉熵的计算过程,就可以完全省去计算Sigmoid梯度这一步,从而避免了Sigmoid本身弥散的致命缺点。

    展开全文
  • 啥用sum就得不到结果呢,用mean就可以。不理解 import tensorflow.compat.v1 as tf import numpy as np # 使用 NumPy 生成假数据(phony data), 总共 100 个点. x_data = np.float32(np.random.rand(2, 100)) # ...
    损失函数求最小,求方差的最小,和求均方差的最小应该都是一个作用吧。为啥用sum就得不到结果呢,用mean就可以。不理解
    
    import tensorflow.compat.v1 as tf
    import numpy as np
    
    # 使用 NumPy 生成假数据(phony data), 总共 100 个点.
    x_data = np.float32(np.random.rand(2, 100)) # 随机输入
    y_data = np.dot([0.100, 0.200], x_data) + 0.300
    
    # 构造一个线性模型
    #
    b = tf.Variable(tf.zeros([1]))
    W = tf.Variable(tf.random.uniform([1, 2], -1.0, 1.0))
    y = tf.matmul(W, x_data) + b
    
    # 最小化方差
    loss = tf.reduce_mean(tf.square(y - y_data)) #这里,为什么用mean呢,用sum就出不来结果,得到很多[nan]
    
    optimizer = tf.train.GradientDescentOptimizer(0.2)
    train = optimizer.minimize(loss)
    
    # 初始化变量
    init = tf.global_variables_initializer()
    
    # 启动图 (graph)
    sess = tf.Session()
    sess.run(init)
    
    # 拟合平面
    for step in range(0, 201):
        sess.run(train)
        if step % 20 == 0:
            print(step, sess.run(W), sess.run(b))
    
    展开全文
  • 下面的所编辑的代码的文字版,上传的第一张图片代码的图片,第二张图片出现的问题 %%设置决策变量 Ut=binvar(24,1,'full'); Un=binvar(24,1,'full'); ich=binvar(24,1,'full'); idis=binvar(24,1,'full...
  • 其他情况的结果全都w0初始值[1/8,1/8,1/8,1/8,1/4,1/4]。</code></pre> 三、备注  1.大佬的代码用的4个资产ÿ0c;我稍作修改ÿ0c;适用于6个资产ÿ0c;不知道算不算抄袭?如果的话ÿ0c;请...
  • 数据库查询数据,在使用聚集函数时,代码中执行之后即使没有数据,rs中也会有数据,注:在数据库中执行该sql时没有数据的,不知道为什么在java代码中会有,我当时使用的聚集函数是sum(),没有数据的部分都显示为0,...
    数据库查询数据,在使用聚集函数时,代码中执行之后即使没有数据,rs中也会有数据,注:在数据库中执行该sql时是没有数据的,不知道为什么在java代码中会有,我当时使用的聚集函数是sum(),没有数据的部分都显示为0,也就是有了数据。所以用rs.next()判断时就一直为真,导致程序运行出错。
    展开全文
  • 我用julia JUMP求解微电网中的机组组合问题(本质上是一个混合整数线性规划问题),调用CPLEX解法器,优化出的结果(储能功率)有时候会出现无意义的锯齿波,分析目标函数和约束条件,这样的结果是不应该出现的。...
  • 1.3.1 为什么使用函数 14 1.3.2 函数的类型 14 1.3.3 函数的参数 15 1.3.4 在公式中输入函数 16 1.4 在公式中使用名称 18 1.4.1 名称的作用范围 19 1.4.2 命名区域 19 1.4.3 命名公式 20 1.4.4 命名常量 21...
  • 我已经编好并运行成功了一个XLL+ user defined function,函数为sum1,在excel中加入这个add in以后,可以用sum1函数进行运算。现在我开始编写另外一个XLL,e.g.sum2,而在sum2程序中我想直接call sum1函数,然后由于...
  • 做的数据结构课程设计,中缀算术表达式求值但是课程还没有学,参考书上代码编的。 代码如下: #include #include #include ... printf("表达式的计算结果是:%d\n",result); return 0; } ``` ```
  • async/await的使用

    2020-06-21 10:44:04
    为什么要用async/await 单纯地使用promise对象+then的形式顺序执行,代码使用起来并不优雅,需要一种更接近传统语法的形式 异步请求axios的API都返回的promise对象 基本用法 async 关键字用于函数上(async函数...

    为什么要用async/await

    1. 单纯地使用promise对象+then的形式顺序执行,代码使用起来并不优雅,需要一种更接近传统语法的形式
    2. 异步请求axios的API都是返回的promise对象

    基本用法

    1. async 关键字用于函数上(async函数的返回值是Promise实例对象所以要用then得到返回值)
    2. await 关键字用于async函数当中,接在promise对象前面可以得到reslove或者reject的结果
            var sum=0
            function time(num){
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        sum=sum+num
                        resolve(sum)
                    }, 1000);
                })
            }
            async function test() {
                var num1 = await time(2)
                var num2 = await time(num1)
                var num3 = await time(num2)
                console.log(num3);
            }
            test()
        // 结果
        // 8
    
    1. 可以看到通过await可以不用then直接的得到Promise对象resolve的结果
    2. 同时代码是从上往下执行更符合传统的语法更优雅
    3. 如果想要得到async函数return的结果
    var sum=0
            function time(num){
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        sum=sum+num
                        resolve(sum)
                    }, 1000);
                })
            }
            async function test() {
                var num1 = await time(2)
                var num2 = await time(num1)
                var num3 = await time(num2)
                return num3
            }
            console.log(test());
            // 结果
            // Promise {<pending>}
    
    1. 可以看到打印还是promise对象,所以要用then得到结果
    test().then(function(res){
                console.log(res);
            })
            // 结果
            // 8
    

    总结

    1. async/await更像是promise对象的语法糖
    展开全文
  • Use a.any() <span class="hljs-keyword">or</span> a.all(),请问是为什么,有什么解决办法吗,我目前只能够在函数里面单独处理要调用的参数当做局部变量保持维度一致,一旦在函数外面当做全局变量设置维度一致的...
  • excel的使用

    2012-11-25 17:06:01
    再比如,公式: =if(SUM(A1:A5>0SUM(A1:A5),0) 此式就利用了嵌套函数,意思,当A1至A5的和大于0时,返回这个值,如果小于0,那么就返回0。 还有一点要提醒你注意:以上的符号均半角,而且IF与括号之间...
  • GDB 单步调试汇编

    2020-12-02 12:26:11
    <div><p>之前在看汇编的时候一直肉眼看GCC -S的结果ÿ0c;...同上面sum函数的解释一样ÿ0c;不再赘述。 程序运行成功退出。</p><p>该提问来源于开源项目:zhangyachen/zhangyachen.github.io</p></div>
  • 为什么不用线性回归的代价函数表示,因为线性回归的代价函数可能是非凸的,对于分类问题,使用梯度下降很难得到最小值,上面的代价函数是函数 的图像如下,即y=1时: 可以看出,当趋于1,y=1,与预测值一致,...
  • LINGO软件的学习

    2009-08-08 22:36:50
    2.1 为什么使用集 集LINGO建模语言的基础,程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么集 集...
  • Oracle_Database_11g完全参考手册.part1/3

    热门讨论 2012-08-18 17:29:13
    4.3.4 为什么称作“关系 4.4 一些通用的、常见的示例 4.5 风险所在 4.6 新视角的重要性 4.6.1 变化的环境 4.6.2 代码、缩写和命名标准 4.7 如何减少混淆 4.7.1 规范化 4.7.2 表和列的英文名称 4.7.3 数据中的英文...
  • 8.3.6 颠倒字符串的顺序 8.3.7 字符串替换 8.4 聚合函数 8.4.1 聚合函数概述 8.4.2 SUM函数运算 8.4.3 MAX函数运算 8.4.4 MIN函数运算 8.4.5 AVG函数运算 8.4.6 COUNT函数运算 8.4.7 聚合函数的组合使用 8.5 小结第9...
  • 是什么? 安装编译 git clone git@github.com:AllenZYJ/Edge-Computing-Engine.git cd to install_diff 进入install_diff目录: 执行 make make install 编译demo入口程序 ➜ edge-computing-engine git:(master)...
  • having 子句的作用筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...
  • 9. 表达式3/6 * 5的计算结果是________ 。 10.定义初值10的10次方的长整型变量 lvar 的语句是:__________________________。 11. 顺序结构、分支结构(或称选择结构)、____________是结构化程序设计的三种基本...
  • ORACLE数据库系统美国ORACLE公司(甲骨文)提供的以分布式数据库核心的一组软件产品,目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...
  • 为什么运行结果里面每个生产者产生的第一个数据值都一样的,第二个数据也一样.......,明明用rand()取的随机种子值???? 还有为什么消费者子线程一直没有结束??? ``` #pragma once #include...
  • 枸杞的由来和技术栈

    2021-01-02 15:11:32
    当你需要的时候你就知道为什么使用它。 而有一些项目本身交互就简单ÿ0c;数据流动一眼也就能望得到边。其实很可能连 React 都不需要ÿ0c;如果再加一个 Reduxÿ0c;这就有点像穿着一身蓑衣撑着一把巨伞在 ...
  • 为什么其它群的话单正常,唯独11群不正常呢?11群四个群中最小的群,其中继计次表位于缓冲区的首位,打完电话后查询内存发现出中继群号在内存中正确的,取完话单后再查就不正确了。 结 论: 话单池的一个备份...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    使用抽象数据类型的主要好处是什么?【北京邮电大学 1994 一(8分)】 4. 回答问题(每题 2分)【山东工业大学 1997 一 (8分)】 (1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着...
  • 6.下列程序段执行后t5的结果是( )。 int t1 = 9, t2 = 11, t3=8; int t4,t5; t4 = t1 > t2 ? t1 : t2+ t1; t5 = t4 > t3 ? t4 : t3; A) 8 B) 20 C) 11 D) 9 7.设 a, b, c, d 均 int 型的变量,并已赋值,下列...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式 如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了= -------------------------------------------------...
  • MySQL命令大全

    2018-01-15 11:19:17
    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号的名Tom的成绩.45, 编号 的名Joan 的成绩.99,编号 的名Wang 的成绩.5. mysql>insert into MyClass values(1,’Tom’,96.45),(2,’Joan...
  • 1.只有第一个单词可以显示所在文件名和TF-IDF的值,其他的词只能显示NULL和0.000000,请问这是为什么? 2.引入DistributedCache后提示无法找到文件 (我用ubuntu 下eclipse编译运行的,hadoop单机版) 下面我的...
  • MYSQL常用命令大全

    2011-05-30 13:31:24
    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号1的名Tom的成绩96.45, 编号2 的名Joan 的成绩82.99,编号3 的名Wang 的成绩96.5. mysql> insert into MyClass values(1,'Tom',96.45),(2,...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

为什么使用sum函数结果是0