在服务时调试批处理规范

时间:2018-06-06 00:17:02

标签: tensorflow batch-normalization

我试图通过逐步推进我的推理模型的前向传递手动可视化激活,我似乎在我的批量规范步骤中进行了不正确的计算。我可以验证我的卷积的输出是相同的,但是当我执行批量规范计算时,我的批量规范的张量流输出与我手工计算的输出不同,这让我觉得我必须误解它是如何实现的。考虑模型图的相关部分:

conv1 = tf.layers.conv1d(...)
conv1_batch = tf.layers.batch_normalization(
    conv1,axis=-1,training = mode == Modes.TRAIN)

我的批量规范远期通行证如下:

def batch_norm_forward(X_in, MA, MV, G, B):
    X_ma = X_in - MA            # normalization mean shift
    X_norm = X_ma / np.sqrt(MV) # normalization scale

    Y_scale = X_norm * G        # gamma scale
    Y = Y_scale + B             # beta shift

    return Y

虽然我非常确信我的batch_norm_forward()函数是正确的,但如果我将conv1的输出传递给batch_norm_forward(conv1,...),我得到的答案与{{}的tensorflows输出相同1}}。

我获得了conv1_batchMAMV&来自tensorflow图的G,代码如下:

B

我的批量规范实施中是否有任何可能缺失的内容?

0 个答案:

没有答案