Python 如何将BatchNormalization权重从keras转换为tf.keras
我已使用BatchNormalization权重保存了keras权重。现在我正在尝试从keras迁移到tf.keras(tf版本2.5.0),并将权重加载到模型中。我得到了一个层错误:Python 如何将BatchNormalization权重从keras转换为tf.keras,python,tensorflow,keras,tensorflow2.0,batch-normalization,Python,Tensorflow,Keras,Tensorflow2.0,Batch Normalization,我已使用BatchNormalization权重保存了keras权重。现在我正在尝试从keras迁移到tf.keras(tf版本2.5.0),并将权重加载到模型中。我得到了一个层错误: ValueError: Layer #2 (named "batch_normalization_1"), weight <tf.Variable 'batch_normalization_1/gamma:0' shape=(64,) dtype=float32> has shap
ValueError: Layer #2 (named "batch_normalization_1"), weight <tf.Variable 'batch_normalization_1/gamma:0' shape=(64,) dtype=float32> has shape (64,), but the saved weight has shape (1,).
ValueError:Layer#2(名为“batch_normalization_1”),权重具有形状(64,),但保存的权重具有形状(1,)。
正如我得到的,这意味着旧的keras格式支持gamma的1个值,而新格式支持多个值。
如何解决此问题?保存的权重具有形状
(1,)
,而我们需要具有形状(64,1)
的权重。最好的替代方法是使用tf.repeat()
将(1,)
成形数组重复64次。看。