Tensorflow.js tf.tidy()函数
Tensorflow.js 是一个由谷歌开发的开源库,用于在浏览器或节点环境中运行机器学习模型以及深度学习神经网络。
.tidy()函数用于执行给定的函数,即fn ,一旦它终止,它就会清除指定函数fn分配的所有等距张量,不包括fn返回的那些。在这里, fn不应该产生一个promise 。但是,返回的输出可能是一个复杂的对象。
笔记:
- 这种方法有利于防止内存泄漏。通常,在 tf.tidy()函数中包装对进程的调用,以便自动清理内存。
- 但是,变量不会在tidy()函数中清除。如果要处理变量,那么我们可以使用tf.disposeVariables()或者立即在变量上调用dispose()方法。
句法:
tf.tidy(nameOrFn, fn?)
参数:
- nameOrFn:声明的停止器名称,或者要执行的函数。如果给出了一个名称,那么第二个参数必须是一个函数。并且如果调试模式打开,则将使用给定的指定在控制台上执行并显示所述函数的调度和内存使用情况。它可以是字符串或函数类型。
- fn:要执行的指定函数。它是可选的,属于函数类型。
返回值:返回 void, number, 字符串, TypedArray, tf.Tensor, tf.Tensor[], or {[key: 字符串]:tf.Tensor, number, or 字符串}。
示例 1:
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Calling tidy() method
const res = tf.tidy(() => {
// Calling scalar() method
const x = tf.scalar(3);
// Calling sqrt() function
const y = tf.sqrt(5);
// Calling square() method
const z = y.square();
// Calling sub() method
return z.sub(x);
});
// Printing output
res.print();
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Calling tidy() method
const res = tf.tidy(() => {
// Calling sin() method
const op = tf.sin(45);
// Printing number of tensors inside tidy
// Using memory() method
console.log('number of tensors inside tidy: '
+ tf.memory().numTensors);
// Calling sqrt() method
return op.sqrt();
});
// Printing number of tensors outside tidy
// Using memory() method
console.log('number of tensors outside tidy: '
+ tf.memory().numTensors);
// Printing output
res.print();
输出:
Tensor
2
示例 2:
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Calling tidy() method
const res = tf.tidy(() => {
// Calling sin() method
const op = tf.sin(45);
// Printing number of tensors inside tidy
// Using memory() method
console.log('number of tensors inside tidy: '
+ tf.memory().numTensors);
// Calling sqrt() method
return op.sqrt();
});
// Printing number of tensors outside tidy
// Using memory() method
console.log('number of tensors outside tidy: '
+ tf.memory().numTensors);
// Printing output
res.print();
输出:
number of tensors inside tidy: 1
number of tensors outside tidy: 1
Tensor
0.9224448204040527
参考: https://js.tensorflow.org/api/latest/#tidy