Tensorflow的tf.nn.moments函数

tf.nn.moments函数

1.官方的输入定义如下: 

def moments(x, axes, name=None, keep_dims=False)
  • x理解为输出数据,形如[batchsize,height,width,kernels]
  • axes表示在哪个维度上求解,是个list,例如[0,1,2]

这个函数的输出有两个:

Two Tensor objects: mean and variance.

解释如下:

  • mean 就是均值啦
  • variance 就是方差啦

2.计算神经网络某层的mean和variance

假定我们需要计算数据的形状是 [batchsize, height, width, kernels],熟悉CNN的都知道,这个在tensorflow中太常见了,例程序如下:

img = tf.Variable(tf.random_normal([128, 32, 32, 64]))
axis = list(range(len(img.get_shape()) - 1))
mean, variance = tf.nn.moments(img, axis)

形如[128, 32, 32, 64]的数据在CNN的中间层非常常见,那么,为了给出一个直观的认识,这个函数的输出结果如下,可能输出的数字比较多。。。

mean =  [ -1.58071518e-03   9.46253538e-04   9.92774963e-04  -2.57909298e-04
             4.31227684e-03   2.85443664e-03  -3.51431966e-03  -2.95847654e-04
            -1.57856941e-03  -7.36653805e-04  -3.81006300e-03   1.95848942e-03
            -2.19231844e-03   1.88898295e-04   3.09050083e-03   1.28045678e-04
            -5.45501709e-04  -7.49588013e-04   3.41436267e-03   4.55856323e-04
             1.21808052e-03   1.71916187e-03   2.33578682e-03  -9.98377800e-04
             1.01172924e-03  -3.25803459e-03   1.98090076e-03  -9.53197479e-04
             3.37207317e-03   6.27857447e-03  -2.22939253e-03  -1.75476074e-04
             1.82938576e-03   2.28643417e-03  -2.59208679e-03  -1.05714798e-03
            -1.82652473e-03   4.51803207e-05  -1.38700008e-03   1.88308954e-03
            -3.67999077e-03  -4.22883034e-03   8.54551792e-04  -1.30176544e-04
            -1.02388859e-03   3.15248966e-03  -1.00244582e-03  -3.58343124e-04
             9.68813896e-04  -3.17507982e-03  -2.61783600e-03  -5.57708740e-03
            -3.49491835e-04   7.54106045e-03  -9.98616219e-04   5.13806939e-04
             1.08468533e-03   1.58560276e-03  -2.76589394e-03  -1.18827820e-03
            -4.92024422e-03   3.14301252e-03   9.12249088e-04  -1.98567938e-03]
variance =  [ 1.00330877  1.00071466  1.00299144  1.00269675  0.99600208  0.99615276
                0.9968518   1.00154674  0.99785519  0.99120021  1.00565553  0.99633628
                0.99637395  0.99959981  0.99702841  0.99686354  1.00210547  1.00151515
                1.00124979  1.00289011  1.0019592   0.99810153  1.00296855  1.0040164
                1.00397885  0.99348587  0.99743217  0.99921477  1.00718474  1.00182319
                1.00461221  1.00222814  1.00570309  0.99897575  1.00203466  1.0002507
                1.00139284  1.0015136   1.00439298  0.99371535  1.00209546  1.00239146
                0.99446201  1.00200033  1.00330424  0.99965429  0.99676734  0.99974728
                0.99562836  1.00447667  0.9969337   1.0026046   0.99110448  1.00229466
                1.00264072  0.99483615  1.00260413  1.0050714   1.00082493  1.00062656
                1.0020628   1.00507069  1.00343442  0.99490905]

解释下这些数字是怎么来的,对于[128,32,32,64]这样的4维矩阵,一个batch里的128个图,经过一个64的kernels卷积层处理,得到了128*64个图,再针对每个kernel对应的128个图,求它们所有像素的均值和方差,因为总共有64个kernels,输出的结果就是一个长度为64的一维数组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值