当前位置: 首页 > 工具软件 > TensorFlow.js > 使用案例 >

TensorFlow.js(02 运算以及内存)

戚明朗
2023-12-01

TensorFlow.js 在 JavaScript 中进行机器学习

一、运算方式

1.张量的数学运算以及为什么使用它们, 下面代码举个简单的例子

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]

官网中还有许多的例子包括一些高级算法,这里不一一举例

2.为什么要使用这些运算

在训练模型当中,需要进行一些运算使数据标准化,特别是在神经网络的情况下,通常需要在以下范围内输入数据

二、内存管理

我们创建的张量存储在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来检查你的内存情况

 类似资料: