TensorFlow:加载检查点,但仅是其中的一部分(卷积层)

TensorFlow:加载检查点,但仅是其中的一部分(卷积层),tensorflow,store,restore,convolution,conv-neural-network,Tensorflow,Store,Restore,Convolution,Conv Neural Network,是否可以仅从一个检查点文件中加载特定层卷积层 我已经训练了一些CNN完全监督并保存了我的进度,我正在做对象定位。为了进行自动标记,我想用我当前的模型构建一个弱监督CNN……但是由于弱监督版本有不同的完全连接层,我只想选择TensorFlow检查点文件的卷积过滤器 当然,我可以手动保存相应层的权重,但由于它们已经包含在TensorFlow的检查点文件中,我想在那里提取它们,以便有一个单独的存储文件。TensorFlow 2.1有许多不同的公共设施用于加载检查点模型。保存,检查点,保存了_模型等,但

是否可以仅从一个检查点文件中加载特定层卷积层

我已经训练了一些CNN完全监督并保存了我的进度,我正在做对象定位。为了进行自动标记,我想用我当前的模型构建一个弱监督CNN……但是由于弱监督版本有不同的完全连接层,我只想选择TensorFlow检查点文件的卷积过滤器


当然,我可以手动保存相应层的权重,但由于它们已经包含在TensorFlow的检查点文件中,我想在那里提取它们,以便有一个单独的存储文件。

TensorFlow 2.1有许多不同的公共设施用于加载检查点模型。保存,检查点,保存了_模型等,但据我所知,它们都没有过滤API。因此,让我为硬案例推荐一个片段,它使用TF2.1内部开发测试中的工具

checkpoint_filename='/path/to/our/wird/checkpoint.ckpt' 模型=tf.keras.model。。。TF2.0模型使用上述检查点进行初始化 变量_to_load=[…]要更新的模型权重名称列表。 从tensorflow.python.training.checkpoint\u utils import load\u checkpoint中,列出变量 reader=加载检查点文件名 对于模型重量中的w: name=w.name.split':'[0]见b/29227106 如果变量中的名称\u到\u加载: 打印更新{name} w、 赋值Reader.get_张量 可选句柄变量重命名 {'/var_name1/in/model':'/var_name1/in/checkpoint', “/var_name2/in/model”:“/var_name2/in/checkpoint”, 等等 }.getname,name 注:model.weights和list_变量可能有助于检查模型和检查点中的变量


另外,请注意,此方法不会还原模型的优化器状态。

Docs在此处有一节选择性地还原变量-您也可以使用tf.train.load\u variablefilename、weight\u mapping[名称]代替reader