python - 将 TF2.0 中的 feed_dict 替换为函数中张量的张量输入
问题描述
我有一个 Keras 回调,它从特定的 Keras 层检索值,如下所示:
def run(self, fetches, next_batch):
"""Run fetches using the validation data passed in during initialization."""
input_data, target_data = self.sess.run(next_batch)
feed_dict = {self.model.inputs[0]: input_data,
self.model._targets[0]: target_data}
result = self.sess.run(fetches=fetches, feed_dict=feed_dict)
return result
next_batch
是 tf1 中的 Dataset.make_one_shot_iterator.get_next() 调用。我已将其替换为 next(iter(ds))。那部分工作正常。
但是我不知道如何重写 sess.run() 调用。我想从“获取”张量中获取输出,但它们的输入是模型中更高的其他张量。我知道哪些张量是我的输入张量,但是我如何将数据传递给它们并从后面层的张量中获得我想要的输出?
我阅读了关于这个主题的转换文档,但它真的很简洁而且没有帮助。我无法找到有关 stackoverflow 的更多信息。
解决方案
可以通过这种方式从模型中获取特定层的输出
#get the output from the layer1
out1 = model.get_layer(layer1_name).output
#get the output from the layer2
out2 = model.get_layer(layer2_name).output
#a new model with outputs of the layers
MyModel = Model(inputs=model.input,outputs=[out1,out2])
现在你可以传递像
#call the model
mymodel = MyModel()
#pass your inputs
outputs = mymodel(inputs)
请记住,这outputs
是可以通过以下方式获取的两个输出的数组
output1 = outputs[0]
output2 = outputs[1]
推荐阅读
- reactjs - React 自定义组件不接受 2 个 onClicks
- google-cloud-platform - 即使设置了 VPC 防火墙规则,也无法通过特定端口连接到 Compute Engine 实例
- javascript - 如何从另一个本地主机获取 cookie 到另一个域
- django - 该问题是由循环导入引起的。姜戈
- database - 如果找到文档,如何使 mongodb 聚合停止?
- python - 如何使用云开发工具包 (CDK) 根据数据库引擎的可用 RDS 指标 CPUUtilization 配置 CloudWatch 警报?
- python - 删除列表中具有特定字符的元素
- git - 从历史记录中删除合并提交
- c# - 我如何将字符串转换为双倍但具有 10 的幂
- python - PIL 包中没有 ImageTk