TensorFlow.js的硬件加速关闭(Chrome)更快

时间:2019-05-04 00:12:07

标签: javascript google-chrome tensorflow hardware-acceleration

我正在学习使用tensorflow.js库,并且已经编写了一个超级简单的脚本。

    var NN = new NeuralNetwork(1);
    NN.addLayer(4);
    NN.addLayer(1);
    NN.Compile();
    console.log(NN.model);

    const test = [[0.25],
                  [0.31]];
    NN.Predict(test).print();

    const inps = [
        [0],
        [0.5],
        [1]
    ]

    const outps = [
        [1],
        [0.5],
        [0]
    ]    

    NN.Train(inps, outps, 1000).then(() => {
    NN.Predict(inps).print();
    });

神经网络类使用张量流

class NeuralNetwork
{
    constructor(a){
        this.model = tf.sequential();
        this.numInputs = a;
    }
    addLayer(nodes)
    {
        var layer;
        if(this.model.layers.length == 0){
            layer = tf.layers.dense({
                units: nodes,
                inputShape: this.numInputs,
                activation: 'sigmoid'
            });
        }
        else{
            layer = tf.layers.dense({
                units: nodes,
                activation: 'sigmoid'
            });
        }

        this.model.add(layer);
    }

    Compile()
    {
        this.model.compile({
            optimizer: tf.train.sgd(0.1),
            loss: tf.losses.meanSquaredError
        });
    }

    Predict(input)
    {
        return this.model.predict(tf.tensor2d(input));
    }

    async Train(inputs, outputs, num)
    {
        var response;
        const i = tf.tensor2d(inputs);
        const o = tf.tensor2d(outputs)
        const config = {
            epochs: 10,
            shuffle: true
        }
        for (let index = 0; index < num; index++) {
            response = await this.model.fit(i,o,config);
            console.log(response.history.loss[0]);
        }
      console.log("Training Complete.");
    }
}

奇怪的是,当我运行这段代码时,我惊讶于它的完成速度如此之慢,大约需要3-4分钟。然后,我进入chrome设置,检查是否启用了硬件加速功能。

然后我关闭了硬件加速并再次运行了脚本。令我惊讶的是,脚本的运行速度明显更快!当然,它给了我一些关于无法连接到webGL的警告,但速度更快。

我已经尝试了一些方法(重新启动计算机,检查chrome是否为最新状态等),但似乎无法弄清楚为什么我遇到这个问题,我以为Tensorflow使用了GPU?当然,硬件加速应该有帮助吗?

还有其他人遇到过这个问题吗?或对我可以尝试的事情有任何建议?

0 个答案:

没有答案