[关闭]
@w460461339 2019-01-28T13:38:12.000000Z 字数 2902 阅读 1256

Tensorflow day2

Tensorflow


1、参考

教程参考:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/overview.html

TensorBoard参考:https://blog.csdn.net/sinat_33761963/article/details/62433234

softmax上溢出/下溢出参考:https://www.codelast.com/%E5%8E%9F%E5%88%9B-%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2softmax%E5%87%BD%E6%95%B0%E4%B8%8A%E6%BA%A2%E5%87%BAoverflow%E5%92%8C%E4%B8%8B%E6%BA%A2%E5%87%BAunderflow/

softmax防止上下溢出参考:http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/

2、今日目标 1——学习如何使用tensorBoard

掌握:

1、tensorboard所需要的输入以及类型。
2、tensorboard具体调用方法。
2.1 tensorboard输入类型

先从输入类型开始讲起。

由于NN网络中每层参数我们都是用矩阵或者向量来定义的,而tensorboard展示给我们的往往是一个二维图,因此需要把这些参数压缩成一个标量(scalar)。

因此,第一种参数类型是:标量(tf.summary.scalar)

当然,我们也想看一下输入的样子,所以,第二个参数类型是输入,tf.summary.input

那么还有其他一些类型这里按下不表。

2.2 tensorboard具体调用方法

那么和图的构建和调用一样。

3、今日目标2——比较自定义softmax-loss和api的softmax_cross_entropy_logist-V2的不同

自定义的cross-entropy:

softmax=tf.nn.softmax(last_output)
cross_entropy=tf.reduce_sum(y_label*tf.log(tf.clip_by_valye(softmax,1e-32,1.0)))

API定义的cross_entropy:

cross_entropy=tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_label,logits=last_output)

问题来由:

1、编写相同的vgg网络代码,在mnist数据上训练,最终的loss计算,一个采用自定义;一个采用api。
2、发现采用自定义的完全无法收敛,而采用api的能够很快收敛。
3.1 问题查找

通过输出最后的loss值,可以发现两者输出的loss值完全不同。

仔细研究后,发现是由于对数值上溢出和下溢出的策略不同。

  1. 网络输出:
  2. [-1.0350179e+03 -1.2889645e+03 -5.3551914e+03 2.1222205e+03
  3. -1.7806185e+03 2.0163844e+03 1.0864736e+02 4.2028843e+03
  4. -2.1118005e+03 1.7040602e+03]
  5. [-1.1503097e+03 -1.7562592e+03 -5.5156274e+03 1.3549369e+03
  6. -1.8913362e+03 1.9013881e+03 4.4843729e+02 4.2615747e+03
  7. -2.2997463e+03 1.7986847e+03]
  8. loss输出:
  9. [ -0. -0. -82.89307 -0. -0. -0. -0.
  10. 0. -0. -0. ]
  11. [ -0. -0. -0. -0. -0. -0. -0.
  12. 0. -82.89307 -0. ]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注