iam 使用 golang 和 tensorflow 模型。使用此代码:```
output, err := sessionModel.Run(
map[tf.Output]*tf.Tensor{
graphModel.Operation("input").Output(0): tensor,
},
[]tf.Output{
graphModel.Operation("output").Output(0),
},
nil)
'''
但是显示错误:
2019/01/07 18:07:48 http: panic serving [::1]:55262: nil-Operation. If the Output was created with a Scope object, see Scope.Err() for details.
我已经检查tensor
包含图像文件中的张量。有什么建议吗?无论如何谢谢
该错误指出(某个节点的)Output
属性是 nil 操作。
因此,graphModel.Operation("input").Operation(0)
或graphModel.Operation("output").Output(0)
返回nil
。
要更正此问题,您必须引用图中的现有节点,因为图中没有名为 input
的张量或名为 output
的张量。
从用于导出模型的 python 代码中,您可以找到输入和输出张量的完整名称。只需访问输入占位符和输出节点的 .name
属性,即可获取要在 Go 中使用的正确名称。
此外,Go 绑定使用起来很复杂,尤其是在要对输入图像运行一些预处理操作时。我建议你使用galeone/tfgo而不是直接使用绑定(请注意,我是此存储库的作者)。
补充@nessuno很好的答案,我需要做的:my_model.inputs
和my_model.outputs
以获得正确的名称。例如:
> my_model.inputs
[<tf.Tensor 'dense_1_input:0' shape=(?, 7) dtype=float32>
> my_model.outputs
[<tf.Tensor 'my_output/BiasAdd:0' shape=(?, 2) dtype=float32>
因此,我的输入和输出节点是dense_1_input
和my_output/BiasAdd
(不是my_output
!