【问题标题】:Convert batch normalization from Tensorlayer tf1.x to TF2 keras将批量标准化从 Tensorlayer tf1.x 转换为 TF2 keras
【发布时间】:2022-07-14 06:00:55
【问题描述】:

尝试将批量归一化层从 Tensorlayer 版本 1.11.1 转换为 Tensorflow 2,并在使用相同的预训练模型进行推理期间从该层获得不同的输出。

张量层 1.11.1

tensorlayer.layers.BatchNormLayer(network, is_train=False, name="batch_norm")

张量流 2.8.0

tf.keras.layers.BatchNormalization(trainable=False, momentum=0.9, axis=3, epsilon=1e-05, gamma_initializer=tf.random_normal_initializer(mean=1.0, stdev=0.002))(network)

要使 BatchNorm 输出匹配,我缺少什么?

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    我的 TF1 模型是 NPZ 格式的。 来自 Tensorlayer 的权重按以下顺序保存: beta、gamma、移动均值、方差。 在TF2中,batch norm层的顺序是: gamma、beta、移动均值、方差。

    如果从 TF1 移动到 TF2 时,beta 和 gamma 的权重顺序颠倒了,问题就解决了。

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 2020-03-25
      • 2020-08-21
      • 2018-07-28
      • 1970-01-01
      • 2019-05-07
      • 2020-01-15
      • 2019-10-30
      • 1970-01-01
      相关资源
      最近更新 更多