莫烦tensorflow Batch Normalization总结与tf.identity()/EMA功能

本文详细介绍了TensorFlow中的Batch Normalization,包括其作用和实现过程,同时深入探讨了tf.identity()函数在控制依赖中的作用以及指数滑动平均(EMA)的概念和应用。通过代码示例,阐述了BN层中影子变量的更新机制和衰减率的设置方法。
摘要由CSDN通过智能技术生成

代码来源于莫烦tensorflow Batch Normalization一节。我添加了一些注释(自己的理解),添加了一些函数的功能介绍。

# 对输入的分散的数据要统一数据规格,这样神经网络可以更好的学习数据的规律,因为数据分布对神经网络是有很大影响的,比如:
# w = 0.1, x1 = 1, x2 =20 --> w*x 0.1, w*x2=2 --> tanh activation function --> tanh(w*x1)接近0,tanh(w*x2)接近1,
#这会使得x增加,w*x接近1或者-1,w*x对较大的x特征范围不敏感.这时候可以对输入数据进行Normalization.


#但是这种情况不仅发生在输入层,所以引入Batch Normalization,在每个batch前向传播时,都要在全连接层与激活函数之间进行Normalization,保持数据分布集中在敏感区域.SGD
# Batch Normalization 包括 标准化工序(x' = x-u/s),s是方差,u是均值.
           # 反标准化工序 y = r * x' + b = BN(x')(参数r, b) 自动学习,用于与标准化工序共同调节数据分布.r:扩展参数,b:平移参数


#=================tf.identity()函数作用与control_dependencies===================
# 第一种:
# x_plus_1 = tf.assign_add(x, 1)

# #control_dependencies的意义是,在执行with包含的内容(在这里就是 y = x)前,
# #先执行control_dependencies参数中的内容(在这里就是 x_plus_1),这里的解释不准确,先接着看。。。
# with tf.control_dependencies([x_plus_1]):
#     y = x    
# 第二种:
# x_plus_1 = tf.assign_add(x, 1)
# with tf.control_dependencies([x_plus_1]):
#     y = tf.identity(x)#修改部分

# 结论:
# 对于control_dependencies这个管理器,只有当里面的操作是一个op时,才会生效,也就是先执行传入的参数op,再执行里面的op。
# 而y=x仅仅是tensor的一个简单赋值,不是定义的op,所以在图中不会形成一个节点,这样该管理器就失效了。
# tf.identity是返回一个一模一样新的tensor的op,这会增加一个新节点到gragh中,这时control_dependencies就会生效,所以第二种情况的输出符合预期。

#=========================================================================
    
    
#=============================EMA=========================================
# 指数滑动平均(ExponentialMovingAverage)EMA被广泛的应用在深度学习的BN层中,RMSprop,adadelta࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值