如何将resnet_v1_50检查点加载到tf.keras ResNet50模型中?

时间:2020-06-02 09:52:08

标签: tensorflow machine-learning keras computer-vision resnet

我有一个.ckpt文件,其中包含基于tensorflow v1 resnet_v1_50的模型的权重。我尝试使用功能tensorflow.python.tools.inspect_checkpoint.print_tensors_in_checkpoint_file检查检查点文件,输出如下:

video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/beta (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/beta/Adam (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/beta/Adam_1 (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/gamma (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/gamma/Adam (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/gamma/Adam_1 (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_mean (DT_FLOAT) [64]
video_model/resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/BatchNorm/moving_variance (DT_FLOAT) [64]
[...]

我想做的就是将此变量(或其子集)加载到tf.keras ResNet50模型中,因为模型中的所有其他层都是用keras编写的;两种架构的结构应该相同,但是如果我检查keras ResNet50的编译版本,则将获得以下信息:

[...]
layer_with_weights-0/bias/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [64]
layer_with_weights-0/kernel/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [7,7,3,64]
layer_with_weights-1/beta/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [64]
layer_with_weights-1/gamma/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [64]
layer_with_weights-1/moving_mean/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [64]
layer_with_weights-1/moving_variance/.ATTRIBUTES/VARIABLE_VALUE (DT_FLOAT) [64]
[...]

我认为这只是对图层的重命名。我有什么机会可以重复使用经过预先训练的检查点吗?

0 个答案:

没有答案