21个项目玩转深度学习-第一章(1)

ide : pycharm 

深度学习框架:temsorflow-gpu

时间:20180905

此文章只是针对在实现该书第一章 mnist数据集时,我遇到的问题的总结

1>one_hot =True 

one_hot = True 表示的是,其构造的n维数组,其中只有一个元素为1,其余元素全为0 的数组

形如(0,1,0,0,0,0,0,0,0,0)

使用onehot的直接原因是现在多分类cnn网络的输出通常是softmax层,输出是一个概率分布,

从而要求输入的标签也以概率分布的形式出现,进而算交叉熵。

2>交叉熵

http://blog.csdn.net/tsyccnh/article/details/79163834

私以为上述博客中针对交叉熵的概念讲述的较为清楚,我在这里仅作简要的概述,如想详细了解,请登录上述文章

交叉熵,起源于熵的概念,在化学中,熵是用来形容某物质的混乱程度,比如相同数量混乱的人群比排列整齐的人群的熵更大一些。在信息论中,entropy是其最初的名字,在中国的学者,注意到,信息论中,entropy其探究的信息所呈现出概念,同熵这个词所呈现的概念及其相似。

如在上述博客中提到的两个事件

事件A=巴西世界杯夺冠

事件B= 中国队世界杯夺冠

显然,作为五次夺取世界杯冠军的巴西队,事件A实现的概率比事件B成立的概率大的多,那么事件A实现后,我们获得的信息相对而言稍微小一点,那么,信息量应该和事件发生的概率有关。

假设X是一个离散型随机变量,其取值集合为χ,概率分布函数p(x)=Pr(X=x),x∈χp(x)=Pr(X=x),x∈χ,则定义事件X=x0X=x0的信息量为:

I(x0)=−log(p(x0))

而熵呢!其描述的就是,信息量的期望值

 

H(X)=−∑i=1np(xi)log(p(xi))

讲完熵的概念,轮到相对熵,在机器学习中,我们希望得到的方法,最终呈现的结果是能够尽可能的模拟真实环境,即,y_(预测值)尽可能的与y(真实值相近),那么,在数学中,X的实际分布P,以及我们的模拟分布Q,我们寄希望于两者能够尽可能的相近。

KL散度的计算公式: 

D_{KL}\left ( p||q \right )=\sum p(x_{i})log\left ( \frac{p(x_{i})}{q(x_{i})} \right )


n为事件的所有可能性。 
DKL的值越小,表示q分布和p分布越接近

交叉熵

 -H\left ( x_{i} \right )+\sum p\left ( x_{i} \right )log\left(q\left(x_{i} \right )\right )

相对熵也可以转化成上述的公式,上述公式,第一项就是原物体真实的期望,不变,后者就是交叉熵,只需要计算后者即可

3>tf.函数的记录

tf.cast(x,dtype,name = None)

x为一个tensor,dtype表示类型,

将x的数据格式转化成dtype.例如,原来x的数据格式是bool, 
那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以

tf.argmax(input,axis=None,name = None,dimension = None)

input为一tensor,多数人axis显示的都只是0和1 ,此可以简单的认为,0表示列,1表示行,但axis为2时,下面博客例子比较好

dhttp://www.cnblogs.com/logo-88/p/9295858.html

我认为axis=0,表示的是第一轴比较,1表示的是第二轴的比较

[[[1,2,3],

[2,3,4]]

[[3,4,5].

[4,5,6]]]

上述举证,第一轴表示的是,[[1,2,3],[2,3,4]] 和[[3,4,5],[4,5,6]]这矩阵,那么比较的就是[1,2,3]he[3,4,5]对应比较

第二轴表示的是,[[1,2,3]和[2,3,4]],[[3,4,5]和[4,5,6]]比较

第三周,则分的更细,[1,2,3]内部元素比较,

从上面看,axis关于轴的选定,可以简单的认为是,上诉举证,[]的内部衍生,如第一轴,表示,除去最外面【】

第二轴除去最外面两层【】,当然这除去的步骤是一步一步来,除去第一层,得到[[1,2,3],[2,3,4]] 和[[3,4,5],[4,5,6]]

两个,再分别对待,得到[1,2,3],[2,3,4],在进行计算。

当不标注axis值时,认为无穷大,直接到最小元素

 

tf.reduce_?(input_tensor, reduction_indices=None, keep_dims=False, name=None)

1>其中reduction_indices和上面axis一致,表示在哪一维度进行求解

2>keepdims 表示的是否保留其原来的维度,如a =[[1,3,3],[2,2,4]]

tf.reduce_max(a) = [2,3,4]

tf.reduce_max(a,keepdims=True)=[[2,3,4]]

tf.reduce_max求最大

tf.reduce_sum求和

tf.reduce_mean求均值

tf.recude_min求最小

tf.reduce_any逻辑或

tf.reduce_

当然,降维不只有这些函数,大同小异,把握好,axis 和keep_dims这两个参数就能举一反三。

 

 

你可能感兴趣的:(21个项目玩转深度学习-第一章(1))