【问题标题】:Accessing intermediate layers from a loaded saved_model in Tensorflow 2.0从 Tensorflow 2.0 中加载的 saved_model 访问中间层
【发布时间】:2020-02-19 22:45:53
【问题描述】:

在 Tensorflow 2.0 中使用 SavedModels 时,是否可以从中间层访问激活?例如,这里有一个模型:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md,我可以运行,例如,

model = tf.saved_model.load('faster_rcnn_inception_v2_coco_2018_01_28/saved_model').signatures['serving_default']
outputs = model(input_tensor)

获取输出预测和边界框。我希望能够访问输出以外的层,但似乎没有任何有关如何执行此操作的 Tensorflow 2.0 文档。下载的模型还包括检查点文件,但似乎也没有很好的文档来说明如何使用 Tensorflow 2.0 加载这些文件......

【问题讨论】:

    标签: tensorflow object-detection tensorflow2.0


    【解决方案1】:

    如果您使用 TensorFlow 2.0 生成保存的模型,则可以提取单个层。但是您所指的模型已保存在 TensorFlow 1.x 中。使用 TF 1.x 保存的模型,您无法单独提取层。

    这是一个示例,说明如何从 TensorFlow 2.0 中保存的模型中提取层

    import tensorflow as tf
    import numpy as np
    
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(64, activation='relu', input_shape=(100,)),
        tf.keras.layers.Dense(10, activation='relu'),
        tf.keras.layers.Dense(1, activation='sigmoid')
    ])
    
    # Compile and fit the model
    
    model.save('save_model', save_format='tf')
    

    然后如图所示加载模型。

    model = tf.keras.models.load_model('save_model')
    layer1 = model.get_layer(index=1)
    

    【讨论】:

    • 即使使用 .pb 和 ckpt 文件也无法获取图形定义?
    • 我不认为你可以在 TF 2.0 中加载 pb 和检查点文件。
    猜你喜欢
    • 2018-10-25
    • 2019-11-21
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多