1

我正在使用 react native 运行 tensorflow。我有一个经过重新训练的 Inception V3 图。我使用了一个 GitHub 存储库示例来测试我自己的模型是否可以工作,并且它运行得非常好。当我尝试使用自己的模型时,出现错误:“检查您的 GraphDef 解释二进制文件是否与您的 GraphDef 生成二进制文件是最新的”

开发信息{Python 3.5, react-Native 0.59, tensorflow 2.0.0a0, protobuf 3.7.1}据我所见,我尝试在旧版本的 tensorflow 上训练我的模型,(我使用的是 1.13.1,我试过1.8.0)。我听说我的 tensorflow 和 protobuf 版本可能太高而无法解释我的 .pb 文件。但这不起作用,我收到了完全相同的错误。

这是识别代码: async identifyImage() {

try {
  const tfImageRecognition = new TfImageRecognition({
    model:require('./assets/retrained_graph.pb'),
    labels: require('./assets/retrained_labels.txt')
  })

  const results = await tfImageRecognition.recognize({
    image: this.image
  })
4

1 回答 1

2

在我的 docker 容器(我运行 tensorflow 服务的地方)上,我有:

TensorFlow ModelServer: 2.1.0-rc1
TensorFlow Library: 2.1.0

该问题与您用于导出 protobuf 模型的本地 tensorflow 版本有关。我知道,如果您使用 tf 版本 1.14.0、2.1.0 和 2.2.0 导出 h5 模型,您在执行推理时会遇到这个问题。您可以尝试使用 >1.15.0 且小于 1.8.0 的 tf 版本。我认为这是因为某些 tensorflow 版本在导出时不支持特定层。

要更改您的本地 tensorflow 版本,您可以这样做

pip install tensorflow==1.15.0

于 2020-05-14T11:20:52.133 回答