JavaScript 深度学习(五)(2)

简介: JavaScript 深度学习(五)

JavaScript 深度学习(五)(1)https://developer.aliyun.com/article/1516990

13.2.4. 可能性的空间

有了所有这些层和预训练模块作为构建模块,你可以构建出哪些有用且有趣的模型呢?记住,构建深度学习模型就像玩乐高积木一样:层和模块可以插在一起,将任何东西映射到任何东西,只要输入和输出表示为张量,并且层具有兼容的输入和输出张量形状。模型的结果层叠执行可微分几何变换,它可以学习输入和输出之间的映射关系,只要关系不过于复杂,以至于超出模型的容量。在这种范式中,可能性的空间是无限的。本节提供了一些示例,以激发你超越我们在本书中强调的基本分类和回归任务的思考。

我们已根据输入和输出模态对建议进行了排序。请注意,其中有不少都在可能性的边界上。虽然模型可以针对任何任务进行训练,只要有足够的训练数据可用,但在某些情况下,这样的模型可能无法很好地泛化远离其训练数据:

  • 将向量映射到向量
  • 预测性医疗保健——将患者医疗记录映射到预测的治疗结果
  • 行为定位——将一组网站属性映射到潜在观众在网站上的行为(包括页面浏览、点击和其他互动)
  • 产品质量控制——将与制造产品相关的一组属性映射到关于产品在市场上表现如何的预测(在市场的不同领域的销售和利润)
  • 将图像映射到向量
  • 医学图像人工智能——将医学图像(如 X 光片)映射到诊断结果
  • 自动车辆转向—将来自摄像头的图像映射到车辆控制信号,如方向盘转向动作
  • 饮食助手—将食物和菜肴的图像映射到预测的健康效应(例如,卡路里计数或过敏警告)
  • 化妆品推荐—将自拍图像映射到推荐的化妆品
  • 将时间序列数据映射到向量
  • 脑机接口—将脑电图(EEG)信号映射到用户意图
  • 行为定向—将产品购买的过去历史(例如电影或书籍购买)映射到未来购买其他产品的概率
  • 地震和余震预测—将地震仪器数据序列映射到地震和随后余震发生的预测概率
  • 将文本映射到向量
  • 电子邮件分类器—将电子邮件内容映射到通用或用户定义的标签(例如,与工作相关的、与家庭相关的和垃圾邮件)
  • 语法评分器—将学生写作样本映射到写作质量评分
  • 基于语音的医疗分诊—将患者对疾病的描述映射到应该转诊给的医疗部门
  • 将文本映射到文本
  • 回复消息建议—将电子邮件映射到一组可能的响应消息
  • 领域特定问答—将客户问题映射到自动回复文本
  • 摘要—将长文章映射到简短摘要
  • 将图像映射到文本
  • 自动生成替代文本—给定一幅图像,生成捕捉内容要点的短文本片段
  • 盲人移动辅助—将内部或外部环境的图像映射到口头指导和有关潜在移动障碍的警告(例如,出口和障碍物位置)
  • 将图像映射到图像
  • 图像超分辨率—将低分辨率图像映射到更高分辨率的图像
  • 基于图像的三维重建—将普通图像映射到同一物体的图像,但从不同角度观察
  • 将图像和时间序列数据映射到向量
  • 医生的多模式助手—将患者的医学图像(例如 MRI)和生命体征历史(血压、心率等)映射到治疗结果的预测
  • 将图像和文本映射到文本
  • 基于图像的问答—将图像和与之相关的问题(例如,一辆二手车的图像和关于其品牌和年份的问题)映射到一个答案
  • 将图像和向量映射到图像
  • 服装和化妆品虚拟试穿—将用户的自拍和化妆品或服装的向量表示映射到用户穿着该产品的图像
  • 将时间序列数据和向量映射到时间序列数据
  • 音乐风格转换—将音乐谱(例如表示为音符时间序列的古典乐曲)和所需风格的描述(例如,爵士乐)映射到所需风格的新音乐谱

正如您可能已经注意到的,此列表中的最后四个类别涉及输入数据中的混合模态。在我们技术史上的这一时刻,生活中的大多数事物都已数字化,因此可以表示为张量,您可以通过深度学习潜在地实现的东西仅受限于您自己的想象力和训练数据的可用性。虽然几乎任何映射都是可能的,但并非每个映射都是。在下一节中,我们将讨论深度学习尚不能做到的事情。

13.2.5。深度学习的限制

可以使用深度学习实现的应用程序空间几乎是无限的。因此,很容易高估深度神经网络的力量,并对它们可以解决的问题过于乐观。本节简要讨论了它们仍然具有的一些限制。

神经网络并不以与人类相同的方式看待世界。

在尝试理解深度学习时,我们面临的一个风险是拟人化,即倾向于误解深度神经网络仿效人类感知和认知。在几个方面,将深度神经网络拟人化是明显错误的。首先,当人类感知到感官刺激(例如带有女孩脸的图像或带有牙刷的图像)时,他们不仅感知到输入的亮度和颜色模式,还提取由这些表面模式表示的更深层次和更重要的概念(例如,年轻女性个体的面孔或口腔卫生产品,以及两者之间的关系)。另一方面,深度神经网络不是这样工作的。当你训练了一个图像标题模型来将图像映射到文本输出时,认为该模型以人类意义理解图像是错误的。在某些情况下,即使是与训练数据中出现的图像类型稍有不同,也可能导致模型生成荒谬的标题(如图 13.2)。

图 13.2。使用深度学习训练的图像标题模型失败


特别是,深度神经网络处理输入的非人类方式被对抗样本突显出来,这些样本是特意设计的,目的是欺骗机器学习模型使其产生分类错误。正如我们在第 7.2 节中通过寻找激活最大的图像来为卷积神经网络滤波器找到的那样,可以在输入空间中进行梯度上升以最大化卷积神经网络滤波器的激活。这个想法可以扩展到输出概率,因此我们可以在输入空间中进行梯度上升,以最大化模型对任何给定输出类别的预测概率。通过给熊猫拍照并添加“长臂猿梯度”,我们可以使模型将图像误分类为长臂猿(图 13.3)。这尽管长臂猿梯度在噪声和幅度上都很小,因此导致的对抗性图像对人类来说看起来与原始熊猫图像无法区分。

图 13.3. 对抗样本:对人眼来说几乎无法察觉的改变可能会影响深度卷积神经网络的分类结果。有关深度神经网络对抗攻击的更多讨论,请参见mng.bz/pyGz


因此,用于计算机视觉的深度神经网络并没有真正理解图像,至少不是以人类的方式。人类学习与深度学习在如何从有限数量的训练样本中泛化这两种学习方式之间存在鲜明对比的另一个领域。深度神经网络可以做到所谓的局部泛化。图 13.4 展示了一个场景,在这个场景中,深度神经网络和人类被要求仅使用少量(比如,八个)训练样本来学习二维参数空间中单个类别的边界。人类意识到类别边界的形状应该是平滑的,区域应该是连通的,并迅速绘制出一个闭合的曲线作为“猜测的”边界。另一方面,神经网络缺乏抽象和先验知识。因此,它可能会得到一个专门的、不规则的边界,严重过拟合于少量训练样本。训练好的模型将在训练样本之外泛化得非常差。增加更多的样本可以帮助神经网络,但这并不总是可行的。主要问题是神经网络是从零开始创建的,只为了解决这个特定的问题。与人类个体不同,它没有任何可以依赖的先验知识,因此不知道要“期望”什么。^([5])这是当前深度学习算法主要局限性的根本原因:通常需要大量的人工标记的训练数据才能训练出一个泛化准确度良好的深度神经网络。

有研究工作在训练单个深度神经网络上进行许多不同且看似无关的任务,以促进跨领域知识共享(参见,例如,Lukasz Kaiser 等人,“学习所有任务的一个模型”,2017 年 6 月 16 日提交,arxiv.org/abs/1706.05137)。但是,这种多任务模型尚未被广泛采用。

图 13.4. 深度学习模型中的局部泛化与人类智能的极端泛化


13.3. 深度学习的趋势

正如我们讨论过的,深度学习在近年取得了惊人的进展,但仍然存在一些局限性。但这个领域并不是静止的;它以惊人的速度不断前进,因此很可能在不久的将来一些局限性会得到改善。本节包含了我们预计在未来几年将见证的深度学习重要突破的一系列合理猜测:

  • 首先,无监督或半监督学习可能会有重大进展。这将对所有形式的深度学习产生深远影响,因为尽管标记数据集的构建成本高昂且难以获得,但在各种业务领域都有大量的未标记数据集。如果我们能够发明一种方法,利用少量标记数据来引导从大量未标记数据中学习,它将为深度学习开启许多新的应用。
  • 其次,深度学习的硬件可能会继续改进,引入越来越强大的神经网络加速器(例如张量处理单元的未来一代^([6]))。这将使研究人员能够使用越来越大的数据集训练更加强大的网络,并继续推动计算机视觉、语音识别、自然语言处理和生成模型等许多机器学习任务的最新技术准确性。

Norman P. Jouppi 等人,“数据中心张量处理单元™的性能分析”,2017 年,arxiv.org/pdf/1704.04760.pdf

  • 设计模型架构和调整模型超参数可能会变得越来越自动化。我们已经在这个领域看到了一个趋势,如 AutoML^([7]) 和 Google Vizier^([8]) 等技术的示例所示。

Barret Zoph 和 Quoc V. Le,“利用强化学习进行神经架构搜索”,2016 年 11 月 5 日提交,arxiv.org/abs/1611.01578

Daniel Golovin,“Google Vizier:一种用于黑盒优化的服务”,2017 年第 23 届 ACM SIGKDD 国际知识发现与数据挖掘会议论文集,第 1487–1495 页,mng.bz/O9yE

  • 神经网络组件的共享和重用可能会继续增长。基于预训练模型的迁移学习将进一步发展。每天都有最先进的深度学习模型变得越来越强大和通用。它们越来越多地在更大更大的数据集上进行训练,有时候为了自动化架构搜索和超参数调整而需要大量的计算资源(请参阅第一和第二条预测)。因此,与其一次又一次地从头开始训练它们,不如对这些预训练模型进行直接推断或迁移学习,这样做更加明智和经济。在某种程度上,这使得深度学习领域更类似于传统的软件工程,高质量的库被定期依赖和重用,这有利于整个领域的标准化和发展速度。
  • 深度学习可能会部署到新的应用领域,改进许多现有解决方案,并开启新的实际应用案例。在我们看来,潜在的应用领域是真正无限的。农业、金融、教育、交通、医疗保健、时尚、体育和娱乐等领域提供了无数等待深度学习从业者探索的机会。
  • 随着深度学习渗透到更多的应用领域,对边缘深度学习的重视可能会日益增加,因为边缘设备最接近用户所在地。因此,该领域可能会发明更小、更节能的神经网络架构,实现与现有更大模型相同的预测准确性和速度。

所有这些预测都将影响 JavaScript 中的深度学习,但最后三个预测尤为重要。可以预期未来 TensorFlow.js 将有更强大、更高效的模型可用。

13.4. 进一步探索的指针

最后,我们想给你一些关于在你翻阅完本书最后一页后如何继续学习和更新知识和技能的指导。尽管现代深度学习领域今天我们所知道的只有几年的历史,但它的漫长而缓慢的前史可以追溯到几十年前。自 2013 年以来,随着财政资源和研究人员数量的指数增长,整个领域现在正以疯狂的速度发展。你在本书中学到的很多东西不会保持很长时间的相关性。深度学习的核心思想(从数据中学习,减少手动特征工程,逐层转换表示)可能会更长时间地存在。更重要的是,通过阅读本书你所建立的知识基础将有望使你能够自己了解深度学习领域的新发展和趋势。幸运的是,这个领域有着开放的文化,其中大多数前沿进展(包括许多数据集!)都以公开可访问和免费的预印本的形式发布,附有公开的博客文章和推文。以下是您应该熟悉的一些顶级资源。

13.4.1. 在 Kaggle 上练习真实世界的机器学习问题

获得机器学习(特别是深度学习)的真实世界经验的有效方法是在 Kaggle 竞赛中尝试手气(kaggle.com)。学习机器学习的唯一真正方法是通过实际的编码、模型构建和调整。这正是本书的哲学,体现在其众多的代码示例中,供您学习、调整和修改。但没有什么比在地基础上使用 TensorFlow.js 等库从头开始构建你的模型和机器学习系统更有效的教你如何做机器学习了。在 Kaggle 上,你可以找到一系列不断更新的数据科学竞赛和数据集,其中许多涉及深度学习。

虽然大多数 Kaggle 用户使用 Python 工具(如 TensorFlow 和 Keras)来解决竞赛问题,但 Kaggle 上的大多数数据集都与语言无关。因此,完全有可能使用非 Python 深度学习框架(如 TensorFlow.js)解决大多数 Kaggle 问题。通过参加一些竞赛,也许作为团队的一部分,你将熟悉本书中描述的一些高级最佳实践的实际应用,尤其是超参数调整和避免验证集过拟合。

13.4.2. 阅读 arXiv 上的最新发展

与其他学术领域相比,深度学习研究几乎完全是公开进行的。论文一经完成并经过审查便会公开并免费提供,许多相关软件也是开源的。ArXiv(arxiv.org)—读作“archive”(X 代表希腊字母chi)—是一家数学、物理和计算机科学论文的开放获取预印本服务器。它成为了发表机器学习和深度学习领域最尖端工作的实际方式,因此也成为了学习该领域最新进展的实际方式。这使得该领域能够以极快的速度前进:所有新的发现和发明都能立即供所有人查阅、评论和建立在其基础之上。

ArXiv 的一个重要缺点是每天发布的新论文数量实在太多,以至于不可能都浏览一遍。ArXiv 上的许多论文没有经过同行评审,这使得它很难识别哪些是重要且高质量的。社区已经建立了工具来应对这些挑战。例如,一个名为 ArXiv Sanity Preserver(arxiv-sanity.com)的网站作为 ArXiv 新论文的推荐引擎,可以帮助您跟踪深度学习特定垂直领域(如自然语言处理或目标检测)的新发展。此外,您还可以使用 Google 学术跟踪您感兴趣的领域和您喜欢的作者的出版物。

13.4.3. 探索 TensorFlow.js 生态系统

TensorFlow.js 拥有充满活力且不断发展的生态系统,包括文档、指南、教程、博客圈和开源项目:

最后的话

这就是JavaScript 深度学习的结尾!希望你在 AI、深度学习以及如何在 JavaScript 中使用 TensorFlow.js 执行一些基本的深度学习任务方面学到了一些东西。像任何有趣且有用的话题一样,学习 AI 和深度学习是一次终身的旅程。这同样适用于将 AI 和深度学习应用于实际问题。无论是专业人士还是业余爱好者都是如此。尽管在深度学习方面取得了许多进展,但大部分基本问题仍然没有得到答案,大部分深度学习的潜在威力也几乎没有得到发掘。请继续学习、质疑、研究、想象、探索、构建和分享!我们期待着看到你用深度学习和 JavaScript 构建的作品!

附录 A:安装 tfjs-node-gpu 及其依赖项

要在 Node.js 中使用 GPU 加速版的 TensorFlow.js(tfjs-node-gpu),你需要在你的计算机上安装 CUDA 和 CuDNN。首先,计算机应配备有支持 CUDA 的 NVIDIA GPU。要检查你的计算机中的 GPU 是否满足该要求,请访问 developer.nvidia.com/cuda-gpus

接下来,我们列出了 Linux 和 Windows 上的驱动程序和库安装的详细步骤,因为这两个操作系统是目前支持 tfjs-node-gpu 的两个操作系统。

A.1. 在 Linux 上安装 tfjs-node-gpu

  1. 我们假设你已经在系统上安装了 Node.js 和 npm,并且 node 和 npm 的路径已包含在你的系统路径中。如果没有,请查看 nodejs.org/en/download/ 获取可下载的安装程序。
  2. developer.nvidia.com/cuda-downloads 下载 CUDA Toolkit。务必选择适合你打算使用的 tfjs-node-gpu 版本的适当版本。在撰写本文时,tfjs-node-gpu 的最新版本为 1.2.10,与 CUDA Toolkit 版本 10.0 兼容。此外,请确保选择正确的操作系统(Linux)、架构(例如,用于主流 Intel CPU 的 x86_64)、Linux 发行版和发行版的版本。你将有下载几种类型安装程序的选项。在这里,我们假设你下载了“runfile(local)”文件(而不是,例如,本地 .deb 包)以供后续步骤使用。
  3. 在你的下载文件夹中,使刚下载的 runfile 可执行。例如,
chmod +x cuda_10.0.130_410.48_linux.run
  1. 使用sudo来运行 runfile。注意,CUDA Toolkit 安装过程可能需要安装或升级 NVIDIA 驱动程序,如果您机器上已安装的 NVIDIA 驱动程序版本过旧或尚未安装此类驱动程序。如果是这种情况,你需要停止 X 服务器,转到仅 shell 模式。在 Ubuntu 和 Debian 发行版中,你可以使用快捷键 Ctrl-Alt-F1 进入仅 shell 模式。按照屏幕上的提示安装 CUDA Toolkit,然后重新启动机器。如果你在仅 shell 模式下,你可以重新启动回到正常的 GUI 模式。
  2. 如果步骤 3 完成正确,nvidia-smi命令现在应该可在你的路径中使用了。你可以使用它来检查 GPU 的状态。它提供了有关安装在你的机器上的 NVIDIA GPU 的名称、温度传感器读数、风扇速度、处理器和内存使用情况,以及当前 NVIDIA 驱动程序版本的信息。当你使用 tfjs-node-gpu 训练深度神经网络时,它是一个方便的实时监视 GPU 的工具。nvidia-smi 的典型输出信息如下(请注意,此机器上有两个 NVIDIA GPU):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111                Driver Version: 384.111                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro P1000        Off  | 00000000:65:00.0  On |                  N/A |
| 41%   53C    P0   ERR! /  N/A |    620MiB /  4035MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Quadro M4000        Off  | 00000000:B3:00.0 Off |                  N/A |
| 46%   30C    P8    11W / 120W |      2MiB /  8121MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      3876      G   /usr/lib/xorg/Xorg                           283MiB |
+-----------------------------------------------------------------------------+
  1. 将 64 位 CUDA 库文件的路径添加到你的LD_LIBRARY_PATH环境变量中。假设你正在使用 bash shell,你可以将以下行添加到你的 .bashrc 文件中:
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:${PATH}"
  1. tfjs-node-gpu 在启动时使用LD_LIBRARY_PATH环境变量来找到所需的动态库文件。
  2. developer.nvidia.com/cudnn下载 CuDNN。为什么除了 CUDA 还需要 CuDNN 呢?这是因为 CUDA 是一个通用的计算库,除了深度学习之外还可以应用在其他领域(例如流体力学)。CuDNN 是 NVIDIA 基于 CUDA 构建的加速深度神经网络操作的库。NVIDIA 可能要求你创建一个登录账号并回答一些调查问题才能下载 CuDNN。一定要下载与之前步骤安装的 CUDA Toolkit 版本相匹配的 CuDNN 版本。例如,CuDNN 7.6 与 CUDA Toolkit 10.0 一起使用。
  3. 与 CUDA Toolkit 不同,下载的 CuDNN 没有可执行安装程序。相反,它是一个压缩的 tarball,其中包含了一些动态库文件和 C/C++头文件。这些文件应该被提取并复制到适当的目标文件夹中。你可以使用如下的一系列命令来实现这一点:
tar xzvf cudnn-10.0-linux-x64-v7.6.4.38.tgz
cp cuda/lib64/* /usr/local/cuda/lib64
cp cuda/include/* /usr/local/cuda/include
  1. 现在,所有必需的驱动程序和库都已安装完成,你可以通过在 node 中导入 tfjs-node-gpu 来快速验证 CUDA 和 CuDNN:
npm i @tensorflow/tfjs @tensorflow/tfjs-node-gpu
node
  1. 然后,在 Node.js 命令行界面上,
> const tf = require('@tensorflow/tfjs');
> require('@tensorflow/tfjs-node-gpu');
  1. 如果一切顺利,你应该会看到一系列日志行,确认发现了一个(或多个,取决于你的系统配置)可以被 tfjs-node-gpu 使用的 GPU:
2018-09-04 13:08:17.602543: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0
with properties:
 name: Quadro M4000 major: 5 minor: 2 memoryClockRate(GHz): 0.7725
 pciBusID: 0000:b3:00.0
 totalMemory: 7.93GiB freeMemory: 7.86GiB
 2018-09-04 13:08:17.602571: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible
gpu devices: 0
 2018-09-04 13:08:18.157029: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:965] Device
interconnect StreamExecutor with strength 1 edge matrix:
 2018-09-04 13:08:18.157054: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:971]      0
 2018-09-04 13:08:18.157061: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:984] 0:   N
 2018-09-04 13:08:18.157213: I
tensorflow/core/common_runtime/gpu/gpu_device.cc:1097] Created
TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with
7584 MB memory) -> physical GPU (device: 0, name: Quadro M4000, pci bus
id: 0000:b3:00.0, compute capability: 5.2)
  1. 现在,你已经准备好使用 tfjs-node-gpu 的所有功能了。只需确保在你的 package.json 中包含以下依赖项(或其后续版本):
...
  "dependencies": {
    "@tensorflow/tfjs": "⁰.12.6",
    "@tensorflow/tfjs-node": "⁰.1.14",
    ...
  }
  ...
  1. 在你的主要的 .js 文件中,确保导入基本的依赖项,包括@tensorflow/tfjs@tensorflow/tfjs-node-gpu。前者给你提供了 TensorFlow.js 的通用 API,而后者将 TensorFlow.js 操作与基于 CUDA 和 CuDNN 实现的高性能计算内核相连:
const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node-gpu');

A.2. 在 Windows 上安装 tfjs-node-gpu

  1. 确保您的 Windows 符合 CUDA Toolkit 的系统要求。某些 Windows 版本和 32 位机器架构不受 CUDA Toolkit 的支持。有关更多详情,请参阅 docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#system-requirements
  2. 我们假设您已在系统上安装了 Node.js 和 npm,并且 Node.js 和 npm 的路径在您系统的环境变量 Path 中可用。如果没有,请访问 nodejs.org/en/download/ 下载安装程序。
  3. 安装 Microsoft Visual Studio,因为它是安装 CUDA Toolkit 所必需的。请参阅步骤 1 中相同的链接,以了解应安装哪个版本的 Visual Studio。
  4. 下载并安装 Windows 版 CUDA Toolkit。在撰写本文时,运行 tfjs-node-gpu 需要 CUDA 10.0(最新版本:1.2.10)。请务必为您的 Windows 发行版选择正确的安装程序。支持 Windows 7 和 Windows 10 的安装程序。此步骤需要管理员权限。
  5. 下载 CuDNN。确保 CuDNN 的版本与 CUDA 的版本匹配。例如,CuDNN 7.6 与 CUDA Toolkit 10.0 匹配。在下载 CuDNN 之前,NVIDIA 可能要求您在其网站上创建帐户并回答一些调查问题。
  6. 与 CUDA Toolkit 安装程序不同,您刚下载的 CuDNN 是一个压缩文件。解压它,您将看到其中有三个文件夹:cuda/bin、cuda/include 和 cuda/lib/x64。找到 CUDA Toolkit 安装的目录(默认情况下,它类似于 C:/Program Files/NVIDIA CUDA Toolkit 10.0/cuda)。将解压后的文件复制到那里相应名称的子文件夹中。例如,解压的 zip 存档中的 cuda/bin 中的文件应复制到 C:/Program Files/NVIDIA CUDA Toolkit 10.0/cuda/bin。此步骤可能还需要管理员权限。
  7. 安装 CUDA Toolkit 和 CuDNN 后,请重新启动 Windows 系统。我们发现这对于所有新安装的库都能正确加载以供 tfjs-node-gpu 使用是必要的。
  8. 安装 npm 包 window-build-tools。这是下一步安装 npm 包 @tensorflow/tfjs-node-gpu 所必需的:
npm install --add-python-to-path='true' --global windows-build-tools
  1. 使用 npm 安装包 @tensorflow/tfjs@tensorflow/tfjs-node-gpu
npm -i @tensorflow/tfjs @tensorflow/tfjs-node-gpu
  1. 要验证安装是否成功,请打开节点命令行并运行
> const tf = require('@tensorflow/tfjs');
> require('@tensorflow/tfjs-node-gpu');
  1. 确保这两个命令都能顺利完成。在第二个命令之后,您应该在控制台中看到一些由 TensorFlow GPU 共享库打印的日志行。这些行将列出 tfjs-node-gpu 已识别并将在后续深度学习程序中使用的 CUDA 启用的 GPU 的详细信息。

附录 B:TensorFlow.js 中张量和操作的快速教程

本附录重点介绍 TensorFlow.js API 中与非tf.Model部分有关的内容。虽然tf.Model提供了一套完整的方法来训练和评估模型,并将其用于推理,但通常需要使用 TensorFlow.js 中的非tf.Model部分来处理tf.Model对象。最常见的情况是

  • 将您的数据转换为可供tf.Model对象输入的张量
  • tf.Model所做的预测数据转换为张量格式,以便其他程序部分可以使用

正如您将看到的,将数据放入和取出张量并不困难,但有一些传统模式和值得注意的点值得指出。

JavaScript 深度学习(五)(3)https://developer.aliyun.com/article/1516992

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
23天前
|
机器学习/深度学习 JavaScript 前端开发
JavaScript 深度学习(五)(5)
JavaScript 深度学习(五)
8 0
|
23天前
|
机器学习/深度学习 JavaScript 前端开发
JavaScript 深度学习(五)(4)
JavaScript 深度学习(五)
24 0
|
23天前
|
存储 机器学习/深度学习 JavaScript
JavaScript 深度学习(五)(3)
JavaScript 深度学习(五)
22 0
|
23天前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript 深度学习(五)(1)
JavaScript 深度学习(五)
25 0
|
23天前
|
机器学习/深度学习 前端开发 JavaScript
JavaScript 深度学习(四)(5)
JavaScript 深度学习(四)
12 1
|
23天前
|
机器学习/深度学习 存储 算法
JavaScript 深度学习(四)(4)
JavaScript 深度学习(四)
22 1
|
23天前
|
机器学习/深度学习 算法 JavaScript
JavaScript 深度学习(四)(3)
JavaScript 深度学习(四)
26 1
|
23天前
|
机器学习/深度学习 编解码 JavaScript
JavaScript 深度学习(四)(2)
JavaScript 深度学习(四)
22 1
|
23天前
|
机器学习/深度学习 自然语言处理 JavaScript
JavaScript 深度学习(四)(1)
JavaScript 深度学习(四)
12 2
|
2天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
148 63