• tensorflow--交叉熵


    学而不思则罔,思而不学则怠。

    最近在看《TensorFlow 实战Google深度学习框架第二版》这本书。从头开始学习深度学习,对于细节方面进行探究。相当于重新拾起来这门”手艺“。

    这篇随笔重点是交叉熵。在本书中出现的位置是62页,章节是3.4.5完整神经网络样例程序的20行附近(可能空行不一致),这里示例代码中出现了损失函数,代码如下:

     1 import tensorflow as tf
     2 from numpy.random import RandomState
     3 
     4 batch_size = 8
     5 
     6 w1 = tf.Variable(tf.random_normal((2,3), stddev=1, seed=1))
     7 w2 = tf.Variable(tf.random_normal((3,1), stddev=1, seed=1))
     8 
     9 #定义输入的张量,第一维设为None,方便变化
    10 x = tf.placeholder(tf.float32, shape=(None, 2), name='x-input')
    11 y_ = tf.placeholder(tf.float32, shape=(None, 1), name='y-input')
    12 
    13 a = tf.matmul(x, w1)
    14 y = tf.matmul(a, w2)
    15 
    16 #cross_entropy就是损失函数
    17 y = tf.sigmoid(y)
    18 cross_entropy = -tf.reduce_mean(
    19     y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0))
    20     + (1-y_)*tf.log(tf.clip_by_value(1-y, 1e-10, 1.0)))

    我们可以看到18行这里是我修改过的代码,根据交叉熵的理论,在这个例子中交叉熵的公式应该为

    loss = -y *log(y_)-(1-y)log(1-y_)

    应该是二值分布。不过书中给的代码有谬误,20行中1-y_写成了1-y。

    参考博客https://www.cnblogs.com/qggg/p/6850120.html

    如果本文有理解错误的地方还请评论指正,你的帮助是我进步的动力。

    可以图形化看到的东西坚决不会用命令行ORZ

  • 相关阅读:
    spring data jpa 分页查询(小结)
    java 工作日判断
    Map的merge方法(java8)
    java8 常用JVM 参数修改
    ubuntu docker client 安装
    scala io 读写文件
    Grafana 系统资源监测
    Java8Stream Collectors收集器
    EhCacheUtils 缓存 ehche (将文件临时保存在磁盘)
    springboot2.X 整合scala
  • 原文地址:https://www.cnblogs.com/IGNB/p/10789648.html
Copyright © 2020-2023  润新知