因此,这是在1-D输入向量上使用批量标准化的示例。批量标准化在100个训练样例xTr
上执行。然后,我想稍后在xTe
上说一个例子。
import tensorflow as tf
import numpy as np
from tensorflow.contrib.layers import layers
if __name__ == "__main__":
bn = layers.batch_norm
nFeats = 3
nObs = 100
xTr = np.random.rand(nObs,nFeats) # Train
xTe = np.random.rand(1,nFeats) # Test
bnTrain = tf.placeholder(tf.bool)
X = tf.placeholder(tf.float32,[None,nFeats])
Y = bn(X,nFeats,is_training=bnTrain) # want to be able to change is_training via a feed_dict.
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
yTr_ = Y.eval(feed_dict={X:xTr,bnTrain:True})
yTe_ = Y.eval(feed_dict={X:xTe,bnTrain:False})
但我无法将tf.Tensor
传递给期望普通python bool的函数。解决这个问题的最佳方法是什么,这样我就可以在会话期间改变布尔。
答案 0 :(得分:2)
tf.contrib.layers.batch_norm()
函数的当前实现旨在接受With ws2.Range("R3", "S" & LR3)
.Value = .Value
End With
作为tf.Tensor
参数(虽然这个事实似乎没有记录),并查看修订版历史,它被添加到TensorFlow 0.10版本中。如果您使用的是旧版本,请尝试升级到最新版本(目前为0.12),现有代码应该可以使用。除了其他改进之外,它还包含批量规范化的融合实现,可以显着提高性能。