tfjs-converter html javascript导入类的麻烦

时间:2018-04-08 13:06:20

标签: javascript html tensorflow

我试图使用tensorflow.js API,我想导入一个已保存的python tensorflow模型。我使用this github library进行转换。我在我的html文件中输入了这些脚本:

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.8.0"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>

然后当我这样做时:

const model = await loadFrozenModel(MODEL_URL, WEIGHTS_URL);

它说类&#34; loadFrozenModel未定义&#34;。

在github页面中,它说使用这些导入:

import * as tfc from '@tensorflow/tfjs-core';
import {loadFrozenModel} from '@tensorflow/tfjs-converter';

当我这样做时,它给出:
&#34;未捕获的SyntaxError:意外的令牌*&#34;

 &#34;未捕获的SyntaxError:意外的令牌{&#34;
分别。使用npm安装库时甚至会出现此错误。注意:我使用的是Windows 10并安装了第三方npm。


如果我错过了一些重要的细节,这是完整的两个文件:
index.html:

<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.8.0"></script>
    <script type="module" src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>
    <script type="module" src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
</head>

<body>
    Tiny TFJS example.<hr>
    <div id="micro_out_div"></div>
    <script src="index.js"> </script>
</body>

index.js:

async function myFirstTfjs() {
    const MODEL_URL = "PATH/TO/tensorflowjs_model.pb";
    const WEIGHTS_URL = 'PATH/TO/weights_manifest.json';
    const model = await loadFrozenModel(MODEL_URL, WEIGHTS_URL);
    const feed = {
        'op_to_restore': tf.tensor1d([0, 0, 0, 0])
    };
    document.getElementById('micro_out_div').innerText += model.execute(feed);
}

myFirstTfjs();

3 个答案:

答案 0 :(得分:2)

到现在为止,问题已解决。 这是最后一个。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.2"> </script>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
    <script type="text/javascript">
      const MODEL_URL = 'http://localhost:8000/tensorflowjs_model.pb';
      const WEIGHTS_URL = 'http://localhost:8000/weights_manifest.json';

      const model = tf.loadFrozenModel(MODEL_URL, WEIGHTS_URL);
      console.log("model loaded");
    </script>
  </head>
  <body>

  </body>
</html>

请记住添加this扩展名以禁用CORS警告

答案 1 :(得分:1)

我认为你没有看到loadFrozenModel,因为脚本是作为模块加载的。另外,@tensorflow/tfjs包含@tensorflow/tfjs-core,因此您无需同时导入。{/ p>

<!doctype html>
<html>
<head>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.9.0></script>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
</head>

<body>
    Tiny TFJS example.<hr>
    <div id="micro_out_div"></div>
</body>
<script src="index.js"> </script>
</html>

答案 2 :(得分:0)

如果您通过脚本标签导入,则需要添加tf_converter,如下所示:

const model = await tf_converter.loadFrozenModel(MODEL_URL, WEIGHTS_URL);