精华内容
下载资源
问答
  • Pytorch详解NLLLoss和CrossEntropyLoss

    万次阅读 多人点赞 2018-12-24 10:46:12
    CrossEntropyLoss CrossEntropyLoss就是把以上Softmax–Log–NLLLoss合并成一步,我们用刚刚随机出来的input直接验证一下结果是不是1.0128: 真的是1.0128哈哈哈哈!我也太厉害了吧! 如果你也觉得我很厉害,请奖励...

    pytorch的官方文档写的也太简陋了吧…害我看了这么久…

    NLLLoss

    在图片单标签分类时,输入m张图片,输出一个m*N的Tensor,其中N是分类个数。比如输入3张图片,分三类,最后的输出是一个3*3的Tensor,举个例子:
    在这里插入图片描述
    第123行分别是第123张图片的结果,假设第123列分别是猫、狗和猪的分类得分。
    可以看出模型认为第123张都更可能是猫。
    然后对每一行使用Softmax,这样可以得到每张图片的概率分布。
    在这里插入图片描述
    这里dim的意思是计算Softmax的维度,这里设置dim=1,可以看到每一行的加和为1。比如第一行0.6600+0.0570+0.2830=1。
    在这里插入图片描述

    如果设置dim=0,就是一列的和为1。比如第一列0.2212+0.3050+0.4738=1。
    我们这里一张图片是一行,所以dim应该设置为1。
    然后对Softmax的结果取自然对数:
    在这里插入图片描述

    Softmax后的数值都在0~1之间,所以ln之后值域是负无穷到0。
    NLLLoss的结果就是把上面的输出与Label对应的那个值拿出来,再去掉负号,再求均值。
    假设我们现在Target是[0,2,1](第一张图片是猫,第二张是猪,第三张是狗)。第一行取第0个元素,第二行取第2个,第三行取第1个,去掉负号,结果是:[0.4155,1.0945,1.5285]。再求个均值,结果是:
    在这里插入图片描述

    下面使用NLLLoss函数验证一下:
    在这里插入图片描述
    嘻嘻,果然是1.0128!

    CrossEntropyLoss

    CrossEntropyLoss就是把以上Softmax–Log–NLLLoss合并成一步,我们用刚刚随机出来的input直接验证一下结果是不是1.0128:
    在这里插入图片描述
    真的是1.0128哈哈哈哈!我也太厉害了吧!

    如果你也觉得我很厉害,请打赏以鼓励我做的更好,非常感谢!

    在这里插入图片描述

    展开全文
  • cross_val_score的 scoring参数值解析

    万次阅读 多人点赞 2018-09-24 20:56:07
    一般我们在模型训练过程中,...sklearn.model_selection 的 cross_val_score 方法来计算模型的得分 scores = cross_val_score(clf, iris.data, iris.target, cv=5,scoring='accuracy') 我们看到这里有个参数 sc...

    一般我们在模型训练过程中,会采用K折交叉验证的方法来验证模型的表现,从而进行调参,一般我们会用到

    sklearn.model_selection 的 cross_val_score 方法来计算模型的得分 
    scores = cross_val_score(clf, iris.data, iris.target, cv=5,scoring='accuracy')

    我们看到这里有个参数 scoring 参数,去scikit-learn官网了解之后发现这里的 scoring参数是默认为 None 的

    sklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=‘2*n_jobs’)

    scoring 参数可以有下面这些选择 具体参见 scoring-parameter

    这里文档对分类、聚类和回归三种问题下可以使用的参数进行了说明

    分类(classification)问题中

    常用的是 ‘precision’ 和 ’recall‘ 和 ’f1,三者的关系可以用下图来表示

    假设这是一个二元分类的问题

    准确率(precision)也就是被分类器检测到的数据中 分类正确的部分

    召回率(recall)就是 正类中被分类正确的部分

    而F1值就是 准确率和召回率的调和平均数

    在实际应用中,如果是做搜索类的问题,那就是在保证召回率的情况下提升准确率

    在做垃圾邮件检测之类的问题,就是要保证准确率的情况下提升召回率

    具体也就是遇到具体问题看两者的权衡

    如果两者都要求高,那就需要保证较高的F1 score

    回归类(Regression)问题中

    比较常用的是 'neg_mean_squared_error‘ 也就是 均方差回归损失

    该统计参数是预测数据和原始数据对应点误差的平方和的均值

    公式长这样,了解下就ok了

     

    以上属于个人的一点理解,不足之处大家可以随意吐槽

     

    展开全文
  • 注解 @CrossOrigin

    万次阅读 多人点赞 2017-08-17 15:06:27
    在Controller中看到@CrossOrigin ,这是什么?有什么用?为什么要用? what? @CrossOrigin是用来处理跨域请求的注解 先来说一下什么是跨域: (站在巨人的肩膀上) 跨域,指的是浏览器不能执行其他网站...

    在Controller中看到@CrossOrigin ,这是什么?有什么用?为什么要用?

     

    what?

     @CrossOrigin是用来处理跨域请求的注解

     

    先来说一下什么是跨域:

     

    (站在巨人的肩膀上)

    跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

    所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:

    http://www.123.com/index.html 调用 http://www.123.com/server.PHP (非跨域)

    http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

    http://abc.123.com/index.html 调用 http://def.123.com/server.php(子域名不同:abc/def,跨域)

    http://www.123.com:8080/index.html调用 http://www.123.com:8081/server.php(端口不同:8080/8081,跨域)

    http://www.123.com/index.html 调用 https://www.123.com/server.php(协议不同:http/https,跨域)

    请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

    浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

     

    当域名www.abc.com下的js代码去访问www.def.com域名下的资源,就会受到限制。

     

    @CrossOrigin可以处理跨域请求,让你能访问不是一个域的文件。

    展开全文
  • 我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层...你对softmax,softmax loss,cross entropy了解吗?相信很多人不一定清楚。虽然网上的资料很多,但是...

    我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等。虽然现在已经开源了很多深度学习框架(比如MxNet,Caffe等),训练一个模型变得非常简单,但是你对这些层具体是怎么实现的了解吗?你对softmax,softmax loss,cross entropy了解吗?相信很多人不一定清楚。虽然网上的资料很多,但是质量参差不齐,常常看得眼花缭乱。为了让大家少走弯路,特地整理了下这些知识点的来龙去脉,希望不仅帮助自己巩固知识,也能帮到他人理解这些内容。

    这一篇主要介绍全连接层和损失层的内容,算是网络里面比较基础的一块内容。先理清下从全连接层到损失层之间的计算。来看下面这张图,来自参考资料1(自己实在懒得画图了)。

    这里写图片描述

    这张图的等号左边部分就是全连接层做的事,W是全连接层的参数,我们也称为权值,X是全连接层的输入,也就是特征。从图上可以看出特征X是N*1的向量,这是怎么得到的呢?这个特征就是由全连接层前面多个卷积层和池化层处理后得到的,假设全连接层前面连接的是一个卷积层,这个卷积层的输出是100个特征(也就是我们常说的feature map的channel为100),每个特征的大小是4*4,那么在将这些特征输入给全连接层之前会将这些特征flat成N*1的向量(这个时候N就是100*4*4=1600)。解释完X,再来看W,W是全连接层的参数,是个T*N的矩阵,这个N和X的N对应,T表示类别数,比如你是7分类,那么T就是7。我们所说的训练一个网络,对于全连接层而言就是寻找最合适的W矩阵。因此全连接层就是执行WX得到一个T*1的向量(也就是图中的logits[T*1]),这个向量里面的每个数都没有大小限制的,也就是从负无穷大到正无穷大。然后如果你是多分类问题,一般会在全连接层后面接一个softmax层,这个softmax的输入是T*1的向量,输出也是T*1的向量(也就是图中的prob[T*1],这个向量的每个值表示这个样本属于每个类的概率),只不过输出的向量的每个值的大小范围为0到1。

    现在你知道softmax的输出向量是什么意思了,就是概率,该样本属于各个类的概率!

    那么softmax执行了什么操作可以得到0到1的概率呢?先来看看softmax的公式(以前自己看这些内容时候对公式也很反感,不过静下心来看就好了):

    这里写图片描述

    公式非常简单,前面说过softmax的输入是WX,假设模型的输入样本是I,讨论一个3分类问题(类别用1,2,3表示),样本I的真实类别是2,那么这个样本I经过网络所有层到达softmax层之前就得到了WX,也就是说WX是一个3*1的向量,那么上面公式中的aj就表示这个3*1的向量中的第j个值(最后会得到S1,S2,S3);而分母中的ak则表示3*1的向量中的3个值,所以会有个求和符号(这里求和是k从1到T,T和上面图中的T是对应相等的,也就是类别数的意思,j的范围也是1到T)。因为e^x恒大于0,所以分子永远是正数,分母又是多个正数的和,所以分母也肯定是正数,因此Sj是正数,而且范围是(0,1)。如果现在不是在训练模型,而是在测试模型,那么当一个样本经过softmax层并输出一个T*1的向量时,就会取这个向量中值最大的那个数的index作为这个样本的预测标签。

    因此我们训练全连接层的W的目标就是使得其输出的WX在经过softmax层计算后其对应于真实标签的预测概率要最高。

    举个例子:假设你的WX=[1,2,3],那么经过softmax层后就会得到[0.09,0.24,0.67],这三个数字表示这个样本属于第1,2,3类的概率分别是0.09,0.24,0.67。

    ———————————–华丽的分割线——————————————

    弄懂了softmax,就要来说说softmax loss了。
    那softmax loss是什么意思呢?如下:

    这里写图片描述

    首先L是损失。Sj是softmax的输出向量S的第j个值,前面已经介绍过了,表示的是这个样本属于第j个类别的概率。yj前面有个求和符号,j的范围也是1到类别数T,因此y是一个1*T的向量,里面的T个值,而且只有1个值是1,其他T-1个值都是0。那么哪个位置的值是1呢?答案是真实标签对应的位置的那个值是1,其他都是0。所以这个公式其实有一个更简单的形式:

    这里写图片描述

    当然此时要限定j是指向当前样本的真实标签。

    来举个例子吧。假设一个5分类问题,然后一个样本I的标签y=[0,0,0,1,0],也就是说样本I的真实标签是4,假设模型预测的结果概率(softmax的输出)p=[0.1,0.15,0.05,0.6,0.1],可以看出这个预测是对的,那么对应的损失L=-log(0.6),也就是当这个样本经过这样的网络参数产生这样的预测p时,它的损失是-log(0.6)。那么假设p=[0.15,0.2,0.4,0.1,0.15],这个预测结果就很离谱了,因为真实标签是4,而你觉得这个样本是4的概率只有0.1(远不如其他概率高,如果是在测试阶段,那么模型就会预测该样本属于类别3),对应损失L=-log(0.1)。那么假设p=[0.05,0.15,0.4,0.3,0.1],这个预测结果虽然也错了,但是没有前面那个那么离谱,对应的损失L=-log(0.3)。我们知道log函数在输入小于1的时候是个负数,而且log函数是递增函数,所以-log(0.6) < -log(0.3) < -log(0.1)。简单讲就是你预测错比预测对的损失要大,预测错得离谱比预测错得轻微的损失要大。

    ———————————–华丽的分割线———————————–

    理清了softmax loss,就可以来看看cross entropy了。
    corss entropy是交叉熵的意思,它的公式如下:

    这里写图片描述

    是不是觉得和softmax loss的公式很像。当cross entropy的输入P是softmax的输出时,cross entropy等于softmax loss。Pj是输入的概率向量P的第j个值,所以如果你的概率是通过softmax公式得到的,那么cross entropy就是softmax loss。这是我自己的理解,如果有误请纠正。

    下一篇将介绍 卷积神经网络系列之softmax loss对输入的求导推导

    参考资料1:http://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/

    展开全文
  • 使用sklearn的cross_val_score进行交叉验证

    万次阅读 多人点赞 2018-06-15 18:21:36
    在构建模型时,调参是极为重要的一个步骤,因为只有选择最佳的参数才能构建一个最优的模型。但是应该如何确定参数的值呢?所以这里记录一下选择参数的方法,以便后期复习以及分享。...sklearn 的 cross_val_sc...
  • 1.错误分析 这里我调用的是qq音乐的一个接口 ...2.跨域资源共享(Cross-Origin-Resource-Sharing) 跨域资源共享(CORS)机制,是为了浏览器能更为安全的处理跨域请求,使其不受同源策略的限制。简单来说就是把需...
  • cross entropy

    2017-07-19 16:31:50
    出处:https://liusida.github.io/2016/11/25/cross-entropy/ Cross Entropy 的通俗意义 ...CrossEntropy=−∑i(Li⋅log(Si))CrossEntropy=−∑i(Li⋅log⁡(Si)) 它描述的是可能性 S 到 L
  • 转自:损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系 cross_entropy-----交叉熵是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。 在介绍softmax_...
  • ModuleNotFoundError: No module named 'sklearn.cross_validation'

    万次阅读 多人点赞 2018-10-21 15:46:35
    from sklearn.cross_validation import KFold from sklearn.cross_validation import train_test_split sklearn更新后在执行以上代码时可能会出现这样的问题: ModuleNotFoundError: No module named 'sklearn....
  • CROSS JOIN

    万次阅读 2017-11-27 14:14:36
    CROSS JOIN又称为笛卡尔乘积,实际上是把两个表乘起来。 SELECT * FROM [TABLE 1] CROSS JOIN [TABLE 2] 或者:SELECT * FROM [TABLE 1], [TABLE 2] Table 1: GameScores ...
  • SpringBoot解决CORS跨域(@CrossOrigin)

    万次阅读 多人点赞 2018-07-21 10:59:20
    要求在Spring4.2及以上的版本 1、@CrossOrigin使用场景要求 jdk1.8+ Spring4.2+ 2、@CrossOrigin源码解析(翻译参考网络,文末列出参考地址) @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention...
  • cross apply

    2019-05-15 11:07:28
    cross apply不需要on 要求:查询每个学生最近两次的考试成绩 SELECT a.id, a.name, b.score from TempStudent a inner join TempScore b on b.TempStudentId = a.id 满足不了 SELECT a.id, a.na...
  • sklearn中的交叉验证(Cross-Validation)

    万次阅读 多人点赞 2017-05-14 01:49:30
    这个repo 用来记录一些python技巧、书籍、学习链接等,...今天主要记录一下sklearn中关于交叉验证的各种用法,主要是对sklearn官方文档 Cross-validation: evaluating estimator performance进行讲解,英文水平好...
  • 交叉熵(Cross-Entropy)

    万次阅读 多人点赞 2016-03-03 18:31:10
    交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。 1.什么是信息量? 假设XX是一个离散型随机变量,其取值集合为X\mathcal{X},概率分布函数为p(x)=Pr...
  • categorical_crossentropy VS. sparse_categorical_crossentropy

    万次阅读 多人点赞 2019-07-13 22:10:12
    categorical_crossentropy 和 sparse_categorical_crossentropy 的区别在哪? 如果你的 targets 是 one-hot 编码,用 categorical_crossentropy  one-hot 编码:[0, 0, 1], [1, 0, 0], [0, 1, 0] 如果你的 tagets ...
  • categorical_crossentropy 和 sparse_categorical_crossentropy 都是交叉熵损失函数,使用哪种函数要根据标签的结构来选择 如果样本标签是one-hot编码,则用 categorical_crossentropy函数  one-hot 编码:[0, 0, ...
  • Cross compile valgrind

    千次阅读 2016-01-26 17:07:07
    How to cross compile valgrind.
  • binary_cross_entropy和binary_cross_entropy_with_logits都是来自torch.nn.functional的函数,首先对比官方文档对它们的区别: 函数名 解释 binary_cross_entropy Function that measures the Binary Cross...
  • No module named 'sklearn.cross_validation'解决方法

    万次阅读 多人点赞 2018-12-27 17:52:05
    在python 机器学习及实践这本书中,交叉验证从cross_validation中引用 from sklearn.cross_validation import train_test_split 然后报错: No module named 'sklearn.cross_validation' 原因: 这个cross_...
  • Cross entropy

    千次阅读 2016-06-24 19:15:28
    In information theory, the cross entropy between two probability distributions {\displaystyle p} and {\displaystyle q} over the same underlying set of events measures the average number ...
  • Cross The River

    2017-12-01 17:07:57
    This game is: a farmer carries a wolf, a sheep and a basket of grass to cross a river , but only one boat can be used . And everytime ,at most one thing and the farmer can take the boat to cross the ...
  • tensorflow 与keras里面的损失函数:categorical_crossentropy VS. sparse_categorical_crossentropy区别: 两者都是多分类交叉熵损失函数,区别在于sparse(稀疏),在于对target编码的要求。 1.categorical_cross...
  • 在使用Pytorch时经常碰见这些函数cross_entropy,CrossEntropyLoss, log_softmax, softmax,整理本文以备日后查阅。 首先要知道上面提到的这些函数一部分是来自于torch.nn,而另一部分则来自于torch.nn.functional...
  • Binary_Cross_Entropy

    万次阅读 多人点赞 2019-09-23 18:02:12
    参考Understanding binary cross-entropy / log loss 此笔记有内容与机器学习逻辑回归算法原理、伪代码及实现效果展示 交叉熵(cross_entropy)重合 Introduction 训练一个二元分类器( binary classifier)的时候,...
  • What is Cross Join in SQL? The SQL CROSS JOIN produces a result set which is the number of rows in the first table multiplied by the number of rows in the second table if no WHERE clause is used ...
  • binary_crossentropy搭配sigmoid分类函数,categorical_crossentropy搭配softmax分类函数 'binary_crossentropy’不能用于多分类任务,如果使用了所得到的Accuary是不对的没有意义,如果多分类任务应该使用...
  • binary_crossentropy和categorical_crossentropy的分析问题原理激活函数softmax函数sigmoid函数分析解决 问题 在使用keras做对心电信号分类的项目中发现一个问题,这个问题起源于我的一个使用错误: binary_cross...
  • 如果是二分类问题,即最终的结果只能是两个分类中的一个,则损失函数loss使用binary_crossentropy 多分类问题: 对于多分类问题,在选择损失函数loss时,主要是看数据是如何编码的: 1.如果是分类编码(one-...
  • sklearn.cross_validation新版本中的替代方法

    万次阅读 多人点赞 2018-10-22 20:01:18
    在sklearn 0.18及以上的版本中,出现了sklearn.cross_validation无法导入的情况,原因是新版本中此包被废弃 解决方法: 只需将 cross_validation 改为 model_selection 即可,如下: 包中的函数仍可继续使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,698
精华内容 31,479
关键字:

cross