Golang 模型会话上的张量流运行错误:nil-操作.如果输出是使用 Scope 对象创建的,请参阅 Scope.Er



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.inputsmy_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_inputmy_output/BiasAdd(不是my_output

最新更新