TensorFlow.js 入门指南

本文是 TensorFlow.js 入门指南,讲解如何在浏览器环境中使用 TensorFlow.js 创建和训练深度学习模型,包括张量操作、优化问题、神经网络和CNN模型的构建。示例包括简单的张量操作、优化器的使用、简单的神经网络和CNN模型的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文 / Zaid Alyafeai

这创造了一个标量张量。我们还可以将数组转换为张量。

Tensorflow.js 是一个基于 deeplearn.js 构建的库,可直接在浏览器环境中创建深度学习模型。使用它可以在浏览器上创建 CNNs,RNNs 等,并使用客户端的 GPU 处理能力训练这些模型。因此,训练 NN 并不一定需要服务器级别的 GPU。本教程首先解释 TensorFlow.js 的基本构建块及其操作。然后,我们描述了如何创建一些复杂的模型。

我在 Observable 上创建了一个交互式编码会话,可用于代码演示。此外,我创建了许多迷你项目,包括简单分类,样式转换,姿势评估和 pix2pix 翻译。

入门
由于 TensorFlow.js 在浏览器上运行,您只需将以下脚本包含在 html 文件的 header 中即可:

    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"> </script>

以上会自动加载最新版本的 TensorFlow.js。

张量(Tensor)
如果您熟悉 TensorFlow 等深度学习平台,您应该能够认识到张量是 Operators 使用的 n 维数组。因此,它们代表了任何深度学习应用程序的构建块。让我们创建一个张量:

1    const tensor = tf.scalar(2);

以上创建了一个张量。我们还可以将数组转换为张量:

1    const input = tf.tensor([2,2]);

这会创建一个恒定的数组张量 [2,2]。换句话说,我们通过应用张量函数将一维数组转换为张量。我们可以使用 input.shape 获取张量大小。

1    const tensor_s = tf.tensor([2,2]).shape;

我们还可以创建具有特定大小的张量:

1    const input = tf.zeros([2,2]);

操作(Operators)
为了使用张量,我们需要创建操作。如下所示,可以获取到张量的平方:

1    const a = tf.tensor([1,2,3]);    
2    a.square().print();    

TensorFlow.js 还允许链接操作。例如,要评估我们使用的张量的二次幂:

1    const x = tf.tensor([1,2,3]);    
2    const x2 = x.square().square();    

Tensor Disposal
通常我们会生成大量的中间张量。例如,在前面的例子中,我们不需要生成 const x。为了做到这一点,我们可以调用 dispose():

1    const x = tf.tensor([1,2,3]);    
2    x.dispose();   

请注意,我们在以后的操作中不再使用张量 x。现在,对于每个张量来说,这可能有点不方便。

TensorFlow.js 提供了一个特殊的操作 tidy() 来自动处理中间张量:

1    function f(x)    
2    {    
3            return tf.tidy(()=>{    
4                    const y = x.square();    
5                    const z = x.mul(y);    
6                    return z    
7            });    
8    }    

请注意,张量 y 的值将被处理,因为我们在评估 z 的值之后不再需要它。

优化问题
在这里,我们将学习如何解决优化问题。给定函数 f(x),基于 x = a 评估最小化 f(x)。为此,我们需要一个优化器。优化器是一种通过渐变来最小化函数的算法。文献中有许多优化器,如 SGD,Adam 等……这些优化器的速度和准确性各不相同。Tensorflowjs 支持最重要的优化器。

我们将举一个简单的例子:f(x)=x⁶+2x⁴+3x²+ x + 1。函数图如下所示。我们看到函数的最小值在区间内 [-0.5,0] 。我们将使用优化器来查找确切的值。

这里写图片描述

首先,我们定义需要最小化的函数

1    function f(x)    
2    {
       
3        const f1 = x.pow(tf.scalar(6, 'int32')) //x^6    
4        const f2 = x.pow(tf.scalar(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值