Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 相同模型和张量下tensorflowjs和keras的不同结果_Javascript_Python_Tensorflow_Keras_Tensorflowjs Converter - Fatal编程技术网

Javascript 相同模型和张量下tensorflowjs和keras的不同结果

Javascript 相同模型和张量下tensorflowjs和keras的不同结果,javascript,python,tensorflow,keras,tensorflowjs-converter,Javascript,Python,Tensorflow,Keras,Tensorflowjs Converter,我在一些图像上训练了一个CNN模型,以。我的模型代码是相同的,我只是在另一个图像数据集上训练它:也用于两个类之间的分类 结果与您在训练集上期望的一样:图像正确分类为0或1 我以tensorflowjs友好的格式保存了模型,并遵循了本文的“备选方案:使用Python API直接导出到TF.js层格式”一节 然而,当我尝试使用javascript访问html页面中的结果时,几乎每个图像(或接近图像)都会得到1:即使图像在Keras中给出0 我甚至在JSON中将图像保存为张量,在Keras中得到0,在

我在一些图像上训练了一个CNN模型,以。我的模型代码是相同的,我只是在另一个图像数据集上训练它:也用于两个类之间的分类

结果与您在训练集上期望的一样:图像正确分类为0或1

我以tensorflowjs友好的格式保存了模型,并遵循了本文的“备选方案:使用Python API直接导出到TF.js层格式”一节

然而,当我尝试使用javascript访问html页面中的结果时,几乎每个图像(或接近图像)都会得到1:即使图像在Keras中给出0

我甚至在JSON中将图像保存为张量,在Keras中得到0,在TensorflowJS中得到1。这是一个错误还是我在什么地方犯了错误

以下是我在TensorflowJS中访问json的代码:

<html>
  <head>
    <!-- Load TensorFlow.js -->
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.0"></script>

    <script>
      // https://stackoverflow.com/a/18324384/2730032
      function callAjax(url, callback){
        var xmlhttp;
        // compatible with IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function(){
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
                callback(xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET", url, true);
        xmlhttp.send();
      }

      tf.loadModel('/model.json').then(model => {
        callAjax('/tensor.json', res => {
          arr = JSON.parse(res);
          const example = tf.tensor(arr).reshape([1, 150, 150, 3]);
          const prediction = model.predict(example);
          prediction.data().then(res => {
            console.log('PREDICTION JS', res[0]);
          })
        });
      })
    </script>
  </head>
  <body>
  </body>
</html>
对于完全相同的数据和相同的模型,我得到了PREDICTION JS 1和PREDICTION PYTHON 0.0:有人在我的代码中看到任何问题吗

EDIT1:我使用的是Xubuntu 18.04.1 LTS,使用的软件版本如下:

Python 3.6.6
Keras 2.2.4
tensorflow 1.11.0
tensorflowjs 0.6.2
numpy 1.15.2

EDIT2:我打开了以下问题,它已经被修复。

升级到tfjs的最新版本(目前为0.13.3)解决了这个问题。 可以查看和查看问题的更多上下文


Mac 10.15、TF2.3、Python 3.8、纯JavaScript TFJS 2.6.0、Web服务器上的类似问题:python3-m http.server

在大型、深度CNN+RNN Keras网络的所有单元上,推断结果始终保持在0.5左右

解决方案: 不要将tensorflowjs_转换器用于.h5到TFJS的转换

tensorflowjs_向导允许您关闭数字压缩,提供与Python TF2.3几乎相同的结果(在我的示例中,最后一层最多6位数字)

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.3"></script>