将预测张量转换为图像

时间:2020-10-22 13:46:08

标签: javascript tensorflow tensorflow.js

使用tensorflow.js

我已经成功导入了我的模型并从中返回了预测。接下来,我想将该预测从张量转换为图像。我的第一个想法是去张量-> js数组->一些画布情况。我敢打赌,这是一种更简单的方法。希望不必涉及节点,但我对此持开放态度。

在这种情况下,预测被标准化为-1-> 1,所以我首先做一些数学运算以将值设为0-> 255

到目前为止:

var a = model.predict(tf.ones([1, 100]));
// map values from -1 -> 1 to 0 -> 255
var b = tf.scalar(127);
a = a.mul(b);
a = a.add(b);
// a.print();

// float to int
var cast = a.asType('int32');

// finally, as an array
var values = cast.arraySync();

这给了我JS中的二维数组。然后我可以这样做:

        // draw to a canvas
        var canvas = document.createElement("canvas");
        canvas.height = 128
        canvas.width = 128;
        //canvas.style.visibility = "hidden";
        document.body.appendChild(canvas);

        // in case not converting 2d to 1d...
        var data = values;

        // Now that we have canvas to work with, we need to draw the image data into it:
        var ctx = canvas.getContext("2d");
        for (var y = 0; y < data.length; ++y) {
          for (var x = 0; x < data[y].length; ++x) {
            ctx.fillStyle = "rgb("+data[x][y][0]+","+data[x][y][1]+","+data[x][y][2]+")";
            ctx.fillRect(x, y, 1, 1);
          }
        }

这可以工作,尽管它并不像我想要的那么快。试图将事情保留在客户端。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

{% for interface in __interface %} {% if interface.mode == 'trunk' %} int {{ interface.portName }} switchport trunk allowed vlan add {{ vlan_id }} {% endif%} {% endfor %} -- 可用于将图像绘制到画布上。

tf.browser.toPixels