tensorflow中的batch_normalization实现

本文详细介绍了在TensorFlow中实现批量归一化的两个主要函数:tf.nn.moments和tf.nn.batch_normalization。首先,通过tf.nn.moments计算输入数据的均值和方差,然后使用这些值进行tf.nn.batch_normalization,完成数据的批量归一化处理。文章通过具体代码示例展示了这一过程。

  tensorflow中实现batch_normalization的函数主要有两个:

    1)tf.nn.moments

    2)tf.nn.batch_normalization

  tf.nn.moments主要是用来计算均值mean和方差variance的值,这两个值被用在之后的tf.nn.batch_normalization中

  tf.nn.moments(x, axis,...)

  主要有两个参数:输入的batchs数据;进行求均值和方差的维度axis,axis的值是一个列表,可以传入多个维度

  返回值:mean和variance

  tf.nn.batch_normalization(x, mean, variance, offset, scala, variance_epsilon)

  主要参数:输入的batchs数据;mean;variance;offset和scala,这两个参数是要学习的参数,所以只要给出初始值,一般offset=0,scala=1;variance_epsilon是为了保证variance为0时,除法仍然可行,设置为一个较小的值即可

  输出:bn处理后的数据

  具体代码如下:    

import tensorflow as tf
import numpy as np


X = tf.constant(np.random.uniform(1, 10, size=(3, 3)), dtype=tf.float32)
axis = list(range(len(X.get_shape()) - 1))
mean, variance = tf.nn.moments(X, axis)
print(axis)

X_batch = tf.nn.batch_normalization(X, mean, variance, 0, 1, 0.001)

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    mean, variance, X_batch = sess.run([mean, variance, X_batch])
    print(mean)
    print(variance)
    print(X_batch)

输出:

axis: [0]
mean: [5.124098 3.0998185 4.723417 ]
variance: [3.7908943 1.7062012 3.8243492]
X_batch: [[-0.32879925 -1.3645337 0.39226937]
      [-1.0266179 0.36186576 -1.3726556 ]
      [ 1.355417 1.0026684 0.98038626]]

 

 

转载于:https://www.cnblogs.com/jiangxinyang/p/9394353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值