0
我想從Tensorflow導出一組預先訓練的權重到Keras。 問題在於,Tensorflow中的批處理規範化圖層僅將Beta和Gamma嵌入爲可訓練權重,而在Keras中,我們也具有Moving_mean和Moving_variance。 我很困惑從哪裏獲得這些權重。Keras的BatchNormalization層中的Moving_mean和Moving_Variance
我想從Tensorflow導出一組預先訓練的權重到Keras。 問題在於,Tensorflow中的批處理規範化圖層僅將Beta和Gamma嵌入爲可訓練權重,而在Keras中,我們也具有Moving_mean和Moving_variance。 我很困惑從哪裏獲得這些權重。Keras的BatchNormalization層中的Moving_mean和Moving_Variance
嘗試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()
僅僅是一個功能轉換張量名稱正確的文件名。 (例如,用下劃線替換斜槓)
如果您對更多詳細信息感興趣,可能會對您有所幫助。
感謝您的回答。我設法從'tf.model_variables()'中抓住它們並將它們導出到keras層。 – Monaj