- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 tensorflow 中的 tf.layers.batch_normalization 感到困惑。
我的代码如下:
def my_net(x, num_classes, phase_train, scope):
x = tf.layers.conv2d(...)
x = tf.layers.batch_normalization(x, training=phase_train)
x = tf.nn.relu(x)
x = tf.layers.max_pooling2d(...)
# some other staffs
...
# return
return x
def train():
phase_train = tf.placeholder(tf.bool, name='phase_train')
image_node = tf.placeholder(tf.float32, shape=[batch_size, HEIGHT, WIDTH, 3])
images, labels = data_loader(train_set)
val_images, val_labels = data_loader(validation_set)
prediction_op = my_net(image_node, num_classes=2,phase_train=phase_train, scope='Branch1')
loss_op = loss(...)
# some other staffs
optimizer = tf.train.AdamOptimizer(base_learning_rate)
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss=total_loss, global_step=global_step)
sess = ...
coord = ...
while not coord.should_stop():
image_batch, label_batch = sess.run([images, labels])
_,loss_value= sess.run([train_op,loss_op], feed_dict={image_node:image_batch,label_node:label_batch,phase_train:True})
step = step+1
if step==NUM_TRAIN_SAMPLES:
for _ in range(NUM_VAL_SAMPLES/batch_size):
image_batch, label_batch = sess.run([val_images, val_labels])
prediction_batch = sess.run([prediction_op], feed_dict={image_node:image_batch,label_node:label_batch,phase_train:False})
val_accuracy = compute_accuracy(...)
def test():
phase_train = tf.placeholder(tf.bool, name='phase_train')
image_node = tf.placeholder(tf.float32, shape=[batch_size, HEIGHT, WIDTH, 3])
test_images, test_labels = data_loader(test_set)
prediction_op = my_net(image_node, num_classes=2,phase_train=phase_train, scope='Branch1')
# some staff to load the trained weights to the graph
saver.restore(...)
for _ in range(NUM_TEST_SAMPLES/batch_size):
image_batch, label_batch = sess.run([test_images, test_labels])
prediction_batch = sess.run([prediction_op], feed_dict={image_node:image_batch,label_node:label_batch,phase_train:False})
test_accuracy = compute_accuracy(...)
训练似乎效果很好,并且 val_accuracy
是合理的(比如 0.70
)。问题是:当我尝试使用训练好的模型进行测试(即 test
函数)时,如果 phase_train
设置为 False
,test_accuracy
非常低(例如 0.000270
),但是当 phase_train
设置为 True
时, test_accuracy
似乎是正确的(例如 0.69
)。
据我了解,在测试阶段phase_train
应该是False
,对吗?我不确定问题是什么。我是否误解了批量归一化?
最佳答案
这可能是您的代码中的一些错误,或者只是过度拟合。如果您对训练数据进行评估,准确性是否与训练期间一样高?如果问题出在批量归一化上,那么在没有训练的情况下,训练误差会比在训练模式下更高。如果问题是过度拟合,那么批量归一化可能不会导致该问题,根本原因在其他地方。
关于tensorflow - 如何在tensorflow中正确使用tf.layers.batch_normalization()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46573345/
我对 tensorflow 中的 tf.layers.batch_normalization 感到困惑。 我的代码如下: def my_net(x, num_classes, phase_train,
我最近开始使用 Tensorflow,并一直在尽力适应环境。这真是太棒了!然而,使用 tf.contrib.layers.batch_norm 进行批量归一化有点棘手。现在,这是我正在使用的函数: d
我在 MNIST 数据上使用 Tensorflow 的官方批量归一化 (BN) 函数 ( tf.contrib.layers.batch_norm() )。我使用以下代码添加 BN: local4_b
我正在训练以下模型: with slim.arg_scope(inception_arg_scope(is_training=True)): logits_v, endpoints_v = i
对于我的实现,我必须先定义权重,并且不能在 TensorFlow 中使用高级函数,如 tf.layers.batch_normalization 或 tf.layers.dense。所以要进行批量归一
我已经在 tensorflow 中实现了某种神经网络(GAN:生成对抗网络)。 它按预期工作,直到我决定在 generator(z) 方法中添加以下批归一化层(参见下面的完整代码): out = tf
我需要在 while 循环体中添加一个 batch_normalization 层,但当我训练网络时它会崩溃。如果我删除x = tf.layers.batch_normalization(x,trai
我使用 TensorFlow 训练 DNN。我了解到 Batch Normalization 对 DNN 非常有帮助,所以我在 DNN 中使用了它。 我使用“tf.layers.batch_norma
tf.layers.batch_normalization 中“可训练”和“训练”标志的意义是什么?这两者在训练和预测过程中有何不同? 最佳答案 批量归一化有两个阶段: 1. Training:
我目前正在实现一个模型,我需要在测试期间更改运行平均值和标准偏差。因此,我假设 nn.functional.batch_norm将是比 nn.BatchNorm2d 更好的选择 但是,我有成批的图像作
我正在尝试构建一个具有两个损失函数的神经网络,它们像加权和一样组合在一起。第一个简单地计算 mean square error密集层和给定标签的线性输出,但另一个大量使用嵌套 tf.map_fn 。有
我正在将 TensorFlow 代码迁移到 TensorFlow 2.1.0。 原代码如下: conv = tf.layers.conv2d(inputs, out_channels, kernel_
我尝试在 Mnist 数据集上使用函数 tf.contrib.layers.batch_norm 实现 CNN。 当我训练和检查模型时,我发现损失正在减少(很好!),但测试数据集的准确性仍然是随机的(
我正在尝试使用 tensorflow 给出的归一化层。在那function ,有一个字段指定我们是使用 beta 还是 gamma 值。 center: If True, subtract beta.
我有一个 Keras 函数模型(具有卷积层的神经网络),它可以很好地与 tensorflow 配合使用。我可以运行它,我可以适应它。 但是,使用tensorflow gpu时无法建立模型。 这是构建模
以下代码(复制/粘贴可运行)说明了如何使用 tf.layers.batch_normalization。 import tensorflow as tf bn = tf.layers.batch_no
我是一名优秀的程序员,十分优秀!