当前位置: 首页 > 知识库问答 >
问题:

Pytorch Batch范数层不同于Keras Batch范数

仲浩旷
2023-03-14

我试图将预训练的BN权重从pytorch模型复制到其等效的Keras模型,但我一直得到不同的输出。

我阅读了Keras和Pytorch BN文档,我认为差异在于它们计算“平均值”和“var”的方式。

Pytorch:

平均值和标准偏差是按小批量的每个尺寸计算的

来源:Pytorch BatchNorm

因此,他们对样本进行平均。

Keras:

轴:整数,应规格化的轴(通常是特征轴)。例如,在具有data\u format=“channels\u first”的Conv2D层之后,在BatchNormalization中设置axis=1。

资料来源:Keras BatchNorm

在这里,它们对特征(通道)进行平均

正确的方法是什么?如何在模型之间传递BN权重?

共有1个答案

孙嘉
2023-03-14

您可以从pytorch模块的running_meanrunning_var属性中检索moving_meanmoving_variance

# torch weights, bias, running_mean, running_var corresponds to keras gamma, beta, moving mean, moving average

weights = torch_module.weight.numpy()  
bias = torch_module.bias.numpy()  
running_mean =  torch_module.running_mean.numpy()
running_var =  torch_module.running_var.numpy()

keras_module.set_weights([weights, bias, running_mean, running_var])
 类似资料:
  • 用于规范WeUI页面元素所属层级、层级顺序及组合规范。

  • 在spring-date-jpa中,当我的规范包含query.distinct(true)时,我看到count(specification)方法,count查询是不正确的。生成的SQL如下所示: 选择distinctcount(*)...

  • 有没有人知道Java10和JVM10规范的版本与以前的版本不同?对于Java8和Java9,有不同的规范,很难看到有什么变化。

  • 说明 这是一套严格的团队开发规范,是 优帆远扬 团队内部 Laravel 工程师践行的开发规范。我们崇尚开放和透明的工程师文化,所以我们尽可能把信息公开。希望这些信息可以为他人参考和借鉴,发挥最大的价值。 目的 优帆远扬是一家崇尚远程协作的软件外包公司,工程师来自全球各地,规范化让我们的工程师训练有素,以此来提供更加高质量的软件交付。另一方面,我们也希望整个团队的项目经验能够得到继承,在每一次实战

  • 我不断得到原因:java.nio.file.nosuchfileException:C:\Program Files\Apache Software Foundation\Tomcat 9.0\WTPWebApps\WebApp\WEB-INF\lib\Jackson-DataBind-2.9.6.jar Exception。我的pom.xml文件中有2.9.6版本的依赖项,但Maven depe

  • 问题内容: 我正在尝试建立一个SQL查询,该查询将为我提供具有相同价格的日期的日期范围。如果价格出现突破,我希望能在新的行中看到它。即使一个月中的某个时间有相同的价格,但如果价格介于两者之间的某个时间有变化,我希望将其视为具有特定日期范围的两个单独的行。 样本数据: 所需结果: 问题答案: 非关系解决方案 我认为没有其他答案是正确的。 不会工作 使用会强制将数据放入物理的“记录归档系统”结构中,然