tf.add(a,b)//张量的添加
const a = tf.tensor1d([1,2,3,4])
const b = tf.tensor1d([10,20,30,40])
a.add(b).print();//输出为 [11,22,33,44]
官网中还有许多的例子包括一些高级算法,这里不一一举例
在训练模型当中,需要进行一些运算使数据标准化,特别是在神经网络的情况下,通常需要在以下范围内输入数据
我们创建的张量存储在webgl和数学运算中,我们对张量的操作也在webgl中。
做为开发人员,我们不必担心管理内存使用情况呢,当我们创建一个变量时,我们使用 变量,当它超出范围时,在某个阶段,javascript引擎会为我们清理,这就是所谓的垃圾收集,当使用webgl时,我们没有垃圾回收了,因为webgl不知道我们什么时候完成了。所以当我们使用这些张量完成时,我们需要明确的告诉它。
有四个方法管理内存如下:
//返回有关当前内存使用情况的一些信息。可查看我们是否使用了大量内存,并弄清楚是否有内存
tf.memory()
//我们可以在单个张量上使用tf.dispose,以便告诉后端我们已经完成了,现在可以从内存中清除这个张量
tf.dispose(container)
//包装一个函数,当函数执行过后,清楚所有的时态
tf.tidy(nameOrFn,fn?)
//当dispose完成函数要清除时,使用keep来阻止删除特定的张量
tf.keep(result)
下面为实验代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h1> memory:</h1>
<h1 id="a"></h1>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js" rel="external nofollow" ></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
function createLotsOfTensors(){
//a张量与b标量相乘创建1000个新张量
for(var i=0;i<1000;i++){
var a = tf.tensor1d([1,2,3]);
var b = tf.scalar(i);
a.mul(b).print();
}
}
tf.tidy(createLotsOfTensors);//清除张量
//查看内存使用情况
$("#a").val(document.write(tf.memory().numTensors));
</script>
在编写过程中随时使用tf.memory来检查你的内存情况