tensorflow2.0 - 给定一个输入并得到两个输出
问题描述
我正在使用 TensorFlow 2.4.0 和 Ubuntu 16.04
鉴于此模型
base_model = tf.keras.applications.EfficientNetB0(weights="imagenet", include_top=False)
base_model.trainable = base_model_trainable
inputs = tf.keras.Input(shape=(IMG_SIZE,IMG_SIZE,3), name="input")
x = tf.keras.applications.efficientnet.preprocess_input(inputs)
# more details - https://www.tensorflow.org/tutorials/images/transfer_learning#important_note_about_batchnormalization_layers
x = base_model(x,
training=False) # training=training is needed only if there are layers with different behavior during training versus inference (e.g. Dropout)
x = tf.keras.layers.GlobalAveragePooling2D()(x)
x = tf.keras.layers.Dropout(0.2)(x)
outputs = tf.keras.layers.Dense(len(class_names), name="output")(x)
model = tf.keras.Model(inputs, outputs)
我的目标是输入以获取model.get_layer("efficientnetb0").output
, 和model.output
如果我做(a)(它不给model.get_layer("efficientnetb0").output
)
layer_name="efficientnetb0"
grad_model = tf.keras.models.Model([model.inputs], [model.output])
或(b)(预处理后需要额外的输入)
grad_model = tf.keras.models.Model([model.inputs, model.get_layer(layer_name).input], [model.get_layer(layer_name).output, model.output])
两者都有效
但如果我这样做
grad_model = tf.keras.models.Model([model.inputs], [model.get_layer(layer_name).output, model.output])
它给出了例外:
ValueError: Graph disconnected: cannot obtain value for tensor KerasTensor(type_spec=TensorSpec(shape=(None, None, None, 3), dtype=tf.float32, name='input_1'), name='input_1', description="created by layer 'input_1'") at layer "rescaling". The following previous layers were accessed without issue: []
是什么原因,有没有办法让我只传递一个输入并获得两个输出?
解决方案
推荐阅读
- java - 我想为spring boot代码编写一个junit,其中包含将excel转换为json的代码,我在这里发布了我尝试过的内容
- swift - 此视图控制器中所需的 coder 参数是什么,我应该放什么?
- react-native - Redux 持久化迁移空 migrationKeys
- rust - 将 Rust 对象相互链接会导致新手傻瓜的借用问题
- android - Unity 中的“il2cpp Android build”时发生错误
- variables - 通过 Makefile 保存多个变量
- r - 用 BTRTools 和 BTprocessR 绘制速率树?
- c++11 - 在将 Scale 应用于 FMX 中的父 TLayout 后,TScrollBox 中出现不需要的滚动条
- python - Django:在同一个视图上组合一个 DetailView 和一个表单
- prometheus-alertmanager - alertmanager amtool 在查询静默时导致分段违规