【问题标题】:Moving_mean and Moving_variance in BatchNormalization layer of KerasKeras BatchNormalization 层中的 Moving_mean 和 Moving_variance
【发布时间】:2018-01-08 06:23:38
【问题描述】:

我想将一组预训练的权重从 Tensorflow 导出到 Keras。 问题在于 Tensorflow 中的批量归一化层仅嵌入了 Beta 和 Gamma 作为可训练的权重,而在 Keras 中,我们也有 Moving_mean 和 Moving_variance。 我很困惑从哪里获得这些权重。

【问题讨论】:

    标签: tensorflow keras batch-normalization


    【解决方案1】:

    试试tf.train.NewCheckpointReader。我最近将一个 CNN 模型从 TF 转换为 Keras,用它导出移动均值/方差权重没有问题。

    reader = tf.train.NewCheckpointReader(ckpt_file)
    for key in reader.get_variable_to_shape_map():
        path = os.path.join(output_folder, get_filename(key))
        arr = reader.get_tensor(key)
        np.save(path, arr)
        print("tensor_name: ", key)
    

    其中get_filename() 只是一个将张量名称转换为正确文件名的函数。 (例如,用下划线替换斜线)

    如果您对更多细节感兴趣,full code 可能会有所帮助。

    【讨论】:

    • 感谢您的回答。我设法从tf.model_variables() 中抓取它们并将它们导出到 keras 层。
    猜你喜欢
    • 2019-03-04
    • 2021-03-16
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2018-05-12
    相关资源
    最近更新 更多