javascript - 需要找出哪些输出节点名称需要传递给 Tensorflowjs 转换器
问题描述
我是 Tensorflow 的新手,我开发了一个模型,它使用 Tensorflow、OpenCV 检测一种特殊类型的卡片,我能够在离线模式下使用我的网络摄像头正确检测到卡片,但我想将它迁移到网络(tensorflowjs ) 但我在转换方面面临一些问题。
我有检查点、元数据文件以及冻结的推理图 pb 文件
我使用以下代码生成了节点名称列表
import tensorflow as tf
modelName = './<path_to_meta_file>'
tf.reset_default_graph()
with tf.Session() as sess:
saver = tf.train.import_meta_graph(modelName)
graph_def = tf.get_default_graph().as_graph_def()
node_list=[n.name for n in graph_def.node]
print(node_list)
这是使用 tensorflow import_meta_graph()的输出文件 输出节点名称
我关心的是我应该在下面的命令中传递什么输出节点名称
tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='<what to write here from that output txt file?>' ./frozen_inference_graph.pb ./web_model
我想在客户端使用真实的网络摄像头运行我现有的模型,任何解决方案和建议将不胜感激
设置细节:
张量流 1.12.0
使用 Anaconda 的 Python 3.5。
解决方案
对我来说,tensorflowjs_converter 通过使用“Placeholder”作为 --output_node_names 的参数来运行:
tensorflowjs_converter --input_format=tf_frozen_model --output_format=tensorflowjs --output_node_names=Placeholder ./frozen_inference_graph.pb ./web_model
不过,不确定这是否是一个有效的解决方案,因为即使转换器在没有错误消息的情况下运行,我也会从 model_pruner 获得输出:“之前的图形大小:1187 个节点,1221 个边。之后的图形大小:1 个节点,0 个边。” - 所以我的输入有效地减少到零,这似乎也不正确。
更新:经过两个多小时的研究,我发现 tensorboard 指示节点名称(请参阅此页面)。就我而言,事实证明--output_node_names=final_result
- 占位符不超过名称已经说明的内容,是一个需要填充有效内容的占位符。
推荐阅读
- r - 求一个变量的均值,取决于另一个变量,按第三个分组
- html - HTML 缩小会扼杀阅读器视图?
- shell - 运行 start-hbase.sh 时出现“Bad Substitution”错误
- javascript - 是否有关于如何从 NodeJS CJS + Babel 迁移到 NodeJS MJS 的策略?
- python - 时间序列上的缺失数据
- jenkins - Jenkinsfile:修剪选择参数并将其传递给阶段
- jmeter - 使用Jmeter工具获取下一个进程id实例
- java - 使用 Stack 求解字符串表达式
- c# - 暂停/排队操作/事件/委托
- c# - 比较 2 个忽略顺序的对象列表