1.对于tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))的拆解

其实这个函数可以分为两个函数,即:softmax 和 cross entropy

2.对于softmax函数的理解

这个其实是比较好理解的,对于神经网络前向传播的输出层为多维时,也就是在研究分类问题时,我们的label一般定为1行M列的数组L,如果样本是c类,那么就令L[c] = 1 ,其他的都为0。但是我们的前向传播的输出层输出的数组L'可不会乖乖的长成L的模样,这个L'一般是M个float数,c'越贴近于1,就说明模型识别样本为c'类。

但是对于交叉熵来说:

 也就是说,对于交叉熵来说,他用到的L'[]中,必须都是概率的形式,也就是加起来得是1,所以就需要用到softmax函数,他能将L'中的所有值转化为概率的形式。另外使用softmax_cross_entropy函数可以解决Mean_Squred_Error(均方误差)刚开始训练时,效率较低的问题。

3.对于cross entropy的理解

        这里就主要对二分类公式和多分类公式进行有效区分就可以了。

交叉与熵的意思:明眼人能看出来,这个交叉熵中的交叉其实体现在不同类的真实值 * ln(p)相加,交叉就是不同类的意思。熵不太清楚,可能跟对p加ln有关。

二分类与多分类的理解:

              我们将两个公式简化来看:

二分类:对于二分类来说,加和的过程其实是对预测正确率的加和。

多分类:对于多分类来说也是一样的,先看c是几时是1,然后把对应的ln[pi]累加。

4.对于代码的理解:

ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))
cem = tf.reduce_mean(ce)
loss = cem + tf.add_n(tf.get_collection('losses'))

其中,logits里传入的是L'[],被softmax调整之后就是p[],labels传入的是索引c,也就是累加加起来的是ln(p[c])。ce就是一个和,reduce_mean求均值,loss使用正则化,后面再加上每个w的权重。

5.对于loss求导求loss的最小值的研究:

其中很明显,根据交叉熵的公式,L是关于p的函数,但是p是由s(score 即前项传播的输出值)通过softmax函数求出来的,故这是一个复合函数,s又是由w通过前项传播的矩阵运算得出来的,所以得上式。

如果参数w只有一个的话,计算应该是在大学所学范围内,但是大部分的网络中,参数都是有很多的,故由现有知识是得不出来那个最优值点的。但由此可以看出,在tensorflow 的训练过程中,函数minmize(loss)的原理应该就是不断的求偏导去找loss的最优值。

对于tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))的研究相关推荐

  1. tf.nn.sparse_softmax_cross_entropy_with_logits()与tf.nn.softmax_cross_entropy_with_logits的差别

    这两个函数的用法类似 sparse_softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, name=N ...

  2. 深度学习中的tf.nn.softmax(logits, axis=1)以及tf.argmax(prob, axis=1)两个函数的参数以及用法

    参考了下面的两个链接: softmax: https://blog.csdn.net/q2519008/article/details/107086024?utm_medium=distribute. ...

  3. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  4. tf.nn.softmax_cross_entropy_with_logits()笔记及交叉熵

    交叉熵 交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性.交叉熵作为损失函数还有一个好处是使用sigmoid函 ...

  5. tf.nn.rnn_cell.DropoutWrapper用法细节案例2

    -- coding: utf-8 -- import tensorflow as tf from tensorflow.contrib import rnn 导入 MINST 数据集 from ten ...

  6. TensorFlow(七)tf.nn库

    ##tf.nn,tf.layers, tf.contrib模块有很多功能是重复的 下面是对三个模块的简述: tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv).池化操作(pooling ...

  7. tf.nn.sigmoid_cross_entropy_with_logits 分类

    tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None,,labels=None,logits=None,name=None) logits和la ...

  8. tf.nn.sampled_softmax_loss

    def sampled_softmax_loss(weights,biases,labels,inputs,num_sampled,num_classes,num_true=1,sampled_val ...

  9. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits中的“logits”到底是个什么意思?

    tf.nn.softmax_cross_entropy_with_logits中的"logits"到底是个什么意思?_玉来愈宏的随笔-CSDN博客 https://blog.csd ...

  10. tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别

    文章目录 0.函数介绍 1.区别联系 1.1 tf.nn.softmax_cross_entropy_with_logits 1.2 tf.nn.sparse_softmax_cross_entrop ...

最新文章

  1. 苹果手机各种型号图片_洪湖苹果X尾插华强北档口诚信收购
  2. 应用深度学习EEGNet来处理脑电信号
  3. 每日一皮:鼓励师招到了,原来是这样的...
  4. Spring集成TestNg测试
  5. python 开运算_形态学去噪python(开运算,闭运算)
  6. JS三教九流系列-require.js-网站模块化开发
  7. 长这么大了,一件事也没做好过
  8. 【电赛】一阶卡尔曼滤波器 滤波效果良好
  9. python中eof表示什么语句错误_python中pickle的EOF错误
  10. blender下载_下载此Blender Hotkey备忘单
  11. vue-router路由详细笔记
  12. practice:在win2008R2上使用(NLB)网络负载均衡
  13. Xcode4.4 import header 的问题解决方法
  14. 不能使用zsh或myzsh创建/切换 包含#的分支名(zsh: bad pattern: #xxx)
  15. 未来架构师的平台战略范例(2)_集装箱
  16. java怎么倒计时_详解java倒计时三种简单实现方式
  17. USBCAN上位机软件的使用
  18. FlashFXP注册码、密钥
  19. 前端三大主流框架到底学哪个好呢?
  20. java数组的四种拷贝方式

热门文章

  1. C++11实现模板手柄:委托构造函数、defaultkeyword分析
  2. WebStorm 6.0下运行pomelo项目
  3. Git 常用命令(转)
  4. Building beautiful User Interface in Android
  5. [转贴]在C#中应用哈希表(Hashtable)
  6. 拓端tecdat|python在Keras中使用LSTM解决序列问题
  7. 卷积神经网络-加载数据集
  8. (16)机器学习_ROC曲线绘制
  9. 进阶版启动jupyterlab教程
  10. 文件图片随机划分训练集和验证集