安装深度学习扩展
免责声明:本文档是关于设置和使用RapidMiner的深度学习扩展。这些段落不会解释深度学习的概念。
目录表
我需要GPU吗?
在讨论深度学习的话题时,必须首先指出,至少对于大型数据集来说,如果你能访问一个或多个数据集,情况可能会更好CUDA-capable gpu:
- 在你的电脑上,
- 在RapidMiner AI Hub,或
- 在云端.
但如果你的数据集较小,或者你只是想熟悉深度学习扩展,你不需要一个GPU。你所需要做的就是在RapidMiner Studio中安装以下两个来自RapidMiner市场的扩展:
加上(可选的)任何可能与您的应用程序相关的额外扩展,例如:
安装相同的扩展在RapidMiner AI Hub如果您计划在那里运行您的流程。
如果你不打算使用GPU——至少现在还没有——你现在准备好了!不需要额外的软件。请务必查看产品内的帮助文本深度学习操作符,并查看下面的存储库中提供的示例流程样品/深度学习.你可以直接跳到引言部分.
ND4J后端
如果您希望超越上述最小(默认)设置,以获得更好的性能,则需要安装额外的软件。请注意ND4J后端扩展提供并配置用于训练和评分神经网络的计算后端。目前可以选择三种后端:
CPU-OpenBLAS(default):默认后端使用进程所在机器的CPU;使用OpenBLAS库进行计算。您不需要安装其他软件。在RapidMiner Studio中选择此选项进行初始网络设置和在较小的数据集上进行测试。
CPU-MKL:此选项使用英特尔的MKL库来加速CPU上的计算;如果有支持Intel mkl的CPU,但没有GPU,建议使用。您需要安装英特尔数学内核库.
GPU-CUDA:此选项在一个可用的GPU上提供加速计算。在检查你的GPU是否兼容的,你需要安装NVIDIA的CUDA 10.1版本。如果GPU还支持GPU加速库cuDNN(7.6版),我们建议您安装它以增强性能。
对于这两个CPU-MKL和GPU-CUDA后端,确保您安装的库在类路径上可用,例如,通过将它们添加到LD_LIBRARY_PATH
环境变量。
阅读更多:设置
CUDA和cuDNN
如果您计划将GPU与RapidMiner Studio一起使用,则需要安装NVIDIA的CUDA 10.1版本和cuDNN 7.6版本。
对于RapidMiner AI Hub的用户,我们提供了一个替代路径,通过为深度学习专门配置的Docker映像.在这些支持gpu的Docker映像上,CUDA和cuDNN是预安装和预配置的。
深度学习扩展介绍
的RapidMiner深度学习扩展支持创建和使用顺序神经网络,但不支持非顺序神经网络。网络可以在嵌套中创建深度学习或深度学习(张量)操作符,通过一个接一个地追加层操作符。层操作符都被命名添加
- 全
- 美国有线电视新闻网
- LSTM
与其他RapidMiner操作符相比,不可能通过设置断点来获得层操作符的中间输出。这些层操作符仅用于配置网络体系结构,因此仅提供在其输出端口上配置到该点的体系结构。
不需要为维度处理添加层,也很少需要手动定义数据的输入形状,因为这是在后台自动完成的,所以不需要平坦层。
一般参数,如epoch的数量或训练的早期停止机制,被设置为所述嵌套深度学习算子的参数,而单个层的设置,如神经元的数量或使用的激活函数,则分别为每层设置添加
层权重和偏差以及从提供的训练和潜在测试数据中记录的分数可以通过深度学习算子的输出端口获得。此外,您可以通过RapidMiner Studio或RapidMiner AI Hub的日志实时监控分数,或通过提供的web界面.
的深度学习扩展允许不同的计算后端在不同的CPU和GPU环境中工作。这些后端可以通过称为的依赖后端扩展提供ND4J后端.这个扩展还允许设置某些内存处理参数。虽然利用CPU的网络创建和使用在Windows, macOS和大多数Linux发行版上都可以工作,但对于GPU计算,只有Windows和Linux支持使用CUDA 10.1的NVIDIA GPU。
正如后端扩展的名称所暗示的那样,深度学习和后端扩展都是基于DeepLearning4J项目套件。DeepLearning4J (DL4J)是一个开源项目,为数值计算提供库,包括计算后端处理以及深度学习功能等。当前使用的DL4J库版本总是在发行说明中说明。
设置
的设置深度学习/ND4J后端在RapidMiner Studio扩展。
另请参见:设置深度学习/ND4J后端在RapidMiner AI Hub
计算后端
如上所述,深度学习扩展需要ND4J后端扩展到函数,因为它提供并配置计算后端用于训练和评分神经网络。
在RapidMiner Studio中,打开下面的Preferences对话框设置>首选项中,选择后端,并设置使用的ND4J后端从以下值:
- CPU-OpenBLAS(默认)
- CPU-MKL
- GPU-CUDA
内存限制
因为训练和评分所需的计算是在Java虚拟机(JVM)之外执行的,所以建议限制所使用的内存。
在RapidMiner Studio中,打开下面的Preferences对话框设置>首选项中,选择后端,并设置深度学习后端可用的最大本机内存:
培训界面端口
如果您为培训UI配置端口,则可以通过web浏览器监控当前正在运行的培训过程。显示的信息包括在训练数据和测试数据(如果还提供测试数据)上计算的epoch和各自的分数,以及关于层架构的元数据。
在RapidMiner Studio中,打开下面的Preferences对话框设置>首选项中,选择DeepLearning,并设置深度学习培训UI端口:
要访问培训UI,请打开浏览器并输入本地主机
作为URL(或您的计算机的IP地址),后面跟着一个冒号,后面跟着配置的端口号(例如,localhost: 33
)。
数据处理。张量和维数
神经网络不仅可以应用于二维表格数据(如RapidMiner ExampleSet),还可以应用于图像、文本、三维数据(如多元时间序列)等。根据数据类型的不同,需要不同的准备步骤,因为神经网络需要张量形式的数值数据,并且通常受益于归一化。
RapidMiner提供了大量预处理数据集的选项。本节将给出一些关于用于某些数据类型的有用机制的提示,并解释深度学习操作符如何处理维度以及如何利用存储在云中的数据。
请注意,有两个深度学习操作符:一个用于表格数据(ExampleSets),另一个用于张量数据(这里主要是图像、文本和时间序列)。注意,我们使用术语“张量数据”作为三维数组的同义词,而在RapidMiner中发现的常规ExampleSets是二维数组。
- 深度学习operator -只接受ExampleSets作为输入
- 深度学习(张量)操作符-接受所有其他类型的数据
的两个不同版本应用模型接线员:
- 应用模型-与创建的模型一起使用深度学习
- 应用模型(通用)-与创建的模型一起使用深度学习(张量)或深度学习.
输入形状/放大/缩小
这两个深度学习默认情况下,操作符尝试推断数据的输入形状。这在很多情况下都有效。如果无法识别所需的输入形状,请禁用advanced参数推断输入形状,选择网络类型您正在设置和填充新的参数,允许您为给定的维度输入值。
在网络内部,某些层之间的维度的上下缩放是自动完成的。
用于上采样以创建解码器或类似的额外层尚未可用。
ExampleSets
ExampleSets是二维数组,其中只有行和列可用。的深度学习操作符本地处理它。可以提供标称标签,因为虚拟编码是自动执行的。确保将所有其他列转换为有意义的数字表示,以确保可以训练和应用神经网络。例如:使用标称到数值,解析数据或其他操作符将所有非特殊属性转换为数字属性。
顺序数据(如时间序列)
与非顺序数据相比,顺序数据具有明显的区别,即条目的实际顺序很重要。因此,提供一个有序的ExampleSet是必要的。可以以两种形式提供类似于序列的数据。
选项1
的示例设置为张量operator接受一个包含两列的长ExampleSet作为输入,其中一列用于分配一个批ID,该批ID将每个示例分配给给定序列,而第二个ID标识给定序列中的顺序。建议使用该选项,例如在从数据库读取时间序列数据时。
示例:有一个时间序列,其中有5个测量值,10个张量,其中每个测量值包含20个时间步,将产生一个包含100个示例(行)和12个属性(列)的ExampleSet。两个属性称为ID属性,其余10个表示传感器读数。批ID将包含从1到5的条目,而每个条目将出现20次。而序列ID可以从1到20,5次计数。批次之间也可以有不同的序列长度,因此每个批次的条目数量不同。神经网络所需数据的屏蔽是自动执行的。
选项2
的时间序列到张量操作符接受一个示例集作为输入,其中给定示例集中的每个示例代表序列的一部分,例如时间步长或文本标记,而每个示例集代表一个完整的序列。对于这个选项,不需要创建ID列。系列ID取自每个给定ExampleSet的顺序。还可以使用不同长度的ExampleSets来表示不同数量的序列条目。神经网络所需数据的屏蔽是自动执行的。
目前网络培训多对一
和多对多
场景支持。上述两个操作符都根据标签是否为常量来推断序列类型。这个选项可以被覆盖。
多对一
例如,用于分类场景,其中一个值应该预测一个条目序列,而多对多
当需要进行多个预测时,可以使用给定的序列输入。
文本
神经网络需要数值数据来进行内部计算。因此,首先必须将文本转换为数字表示形式。将文本转换为数字表示通常使用单词嵌入来完成,例如Word2Vec,手套或其他人。这些嵌入是预训练的表示,在文本语料库上进行训练,为每个训练的单词提供一个数字向量。要使用这些嵌入转换文本,首先需要对文本进行标记化(例如,使用来自文本处理扩展)。之后,可以使用“文本到嵌入ID”操作符将每个令牌转换为它在所选嵌入的字典中具有的ID。这个ID稍后在神经网络中转换为数值向量。因此,有必要添加一个嵌入层作为网络的第一层。在对数据集进行评分后,可以将这些id转换回它们各自的令牌。
词嵌入可以从各种来源下载,或在自己的语料库上创建,例如使用Word2Vec扩展.在大多数情况下,建议使用现有的嵌入。
图片
查看扩展图像处理
图像可以读取和预处理使用图像处理扩展。这个扩展提供了操作员在使用文件夹名称作为标签的目录中读取图像路径列表。这些路径稍后用于访问图像,并在需要进行训练之前对其执行预处理步骤。
的预处理图像算子有一个张量输出端口,可以输入深度学习(张量)运算符获得所提供图像的数值表示,从而可以被网络使用。
一定要使用组模型(通用)算子结合预处理模型从预处理图像操作员使用训练过的深度学习模型来获得一个单一的模型,该模型可以应用于未见过的图像。
云数据
访问大量图像通常是从Amazon S3或Azure Data Lake等云存储位置完成的。使用阅读Amazon S3和阅读微软数据湖存储操作符访问映像,并将它们写入到连接到docker映像的持久卷中启用gpu的作业代理.之后,使用读取图像元数据操作员从持久卷中读取这些图像,节省了迭代各种参数以微调网络时的时间和带宽。
模型导入(Keras)
的深度学习扩展允许您导入用Keras创建的模型(包括原始的多后端Keras和Tensorflow Keras)。不过,目前的导入仅限于顺序模型。
为了在RapidMiner中使用Keras模型,通过Keras的save_model
函数到一个hd5
包含体系结构和权重的文件。之后,可以使用Read Keras模型操作符。该操作符将模型转换为本机DL4J模型,该模型可以在RapidMiner内部使用应用模型操作符,而无需安装Python。
如果执行了分类任务,则可以通过操作符参数为使用的类值的数字表示定义标称值。