当使用BatchNorm时,测试结果很差

2024-06-02 08:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在和老师研究Resnet,我们做了一些改变。修改后的最终损耗为MSE,训练步数为10000。 我使用AdamOptimizertf.layers.batch_normalization。训练效果良好。你知道吗

但是当我测试时,设置training=False,性能非常糟糕。你知道吗

我找了很多可能的情况。你知道吗

updated_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
    with tf.control_dependencies(updated_ops):
        lead_paras = optimizer.minimize(lead_loss, global_step=counter_paras)

我总是有这个密码,它不是答案。很多其他的答案都不能解决我的问题。你知道吗

模型如下:

inputs = conv1(inputs)
inputs = residual_block1(inputs) #some conv layer with residual
inputs = residual_block2(inputs)
inputs = tf.layers.batch_normalization(inputs=inputs,
                                       axis=3,
                                       momentum=0.95,
                                       epsilon=1e-5,
                                       center=True,
                                       scale=True,
                                       training=is_training)
inputs = tf.nn.relu(inputs) # the size is [batchsize, 16, 16, 32]
T1 = inputs[:, :, :, 0:16]
T2 = inputs[:, :, :, 16:32]
label1 = tf.zeros(shape=tf.shape(T1), dtype=tf.float32)
label2 = tf.ones(shape=tf.shape(T1), dtype=tf.float32)
lead_loss = tf.reduce_mean(tf.square(T1-label1))
nolead_loss = tf.reduce_mean(tf.square(T2-label2))
loss = lead_loss+nolead_loss
optimizer = tf.train.AdamOptimizer()
updated_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(updated_ops):
    lead_paras = optimizer.minimize(loss, global_step=counter_paras)

像这样。你知道吗

result

我想要T1方法1和T2方法0。训练结果就是我需要的。你知道吗

如果有人能帮我解决这个问题,我将不胜感激。你知道吗


Tags: tfwithtrainingopsoptimizerinputst1lead