批量标准化:将tensorflow训练权重转换为pytorch

批量标准化:将tensorflow训练权重转换为pytorch,tensorflow,pytorch,batch-normalization,Tensorflow,Pytorch,Batch Normalization,我正试图将一个旧的tensorflow/keras网络转换为pytorch,我对批量归一化(BN)权重的值感到困惑。例如,my pytorch网络的第一个BN层有两组形状元素(权重和偏差)[8]。相反,tensorflow中的同一BN层返回4组形状元素[8] 由于我不打算在将网络转换为pytorch后对其进行再培训,我想知道tensorflow BN层的哪两组元素与pytorch BN层对应。旧tensorflow代码的版本?使用什么图层?Tensorflow可能有均值、方差(作为参数)和运行均

我正试图将一个旧的tensorflow/keras网络转换为pytorch,我对批量归一化(BN)权重的值感到困惑。例如,my pytorch网络的第一个BN层有两组形状元素(权重和偏差)[8]。相反,tensorflow中的同一BN层返回4组形状元素[8]


由于我不打算在将网络转换为pytorch后对其进行再培训,我想知道tensorflow BN层的哪两组元素与pytorch BN层对应。

旧tensorflow代码的版本?使用什么图层?Tensorflow可能有均值、方差(作为参数)和运行均值和运行方差,这就是为什么有四个。PyTorch的前两个作为权重,后两个作为缓冲。我使用Tensorflow 1.13.1、Keras 2.2.4和PyTorch 1.1.0。原始层来自keras.layers.normalization.BatchNormalization()。pytorch层是torch.nn.batchNormal3D()。我发现这两个答案表明@SzymonMaszke的回答是正确的,如果有人在同一个问题上挣扎的话:事实上,似乎正是如此,顺序是
[gamma,beta,running_mean,running_variance]
。旧tensorflow代码的版本?使用什么图层?Tensorflow可能有均值、方差(作为参数)和运行均值和运行方差,这就是为什么有四个。PyTorch的前两个作为权重,后两个作为缓冲。我使用Tensorflow 1.13.1、Keras 2.2.4和PyTorch 1.1.0。原始层来自keras.layers.normalization.BatchNormalization()。pytorch层是torch.nn.batchNormal3D()。我发现这两个答案表明@SzymonMaszke的回答是正确的,如果有人在同一个问题上挣扎的话:事实上,似乎正是如此,顺序是
[gamma,beta,running_mean,running_variance]