我正在学习使用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?当然,硬件加速应该有帮助吗?
还有其他人遇到过这个问题吗?或对我可以尝试的事情有任何建议?