这个例子展示了如何通过转换和组合数据存储来训练关于内存外序列数据的深度学习网络。
转换后的数据存储转换或处理从基础数据存储读取的数据。您可以使用转换后的数据存储作为深度学习应用程序的培训、验证、测试和预测数据集的来源。使用转换后的数据存储读取内存不足的数据,或在读取批量数据时执行特定的预处理操作。当您拥有包含预测值和标签的单独数据存储时,您可以将它们组合起来,以便将数据输入到深度学习网络中。
在训练网络时,软件通过填充、截断或分割输入数据来创建相同长度的小批量序列。对于内存中的数据培训选项
函数提供了填充和截断输入序列的选项,但是,对于内存不足的数据,必须手动填充和截断序列。
负荷训练数据
按照[1]和[2]中所述加载日语元音数据集。zip文件日本
包含不同长度的序列。序列分为两个文件夹,火车
和测验
,分别包含训练序列和测试序列。在每个文件夹中,序列被划分为子文件夹,这些子文件夹从编号开始1.
到9
。这些子文件夹的名称是标签名称。MAT文件表示每个序列。每个序列是一个矩阵,有12行,每个要素一行,不同数量的列,每个时间步一列。行数是序列维度,列数是序列长度。
解压缩序列数据。
对于训练预测器,创建一个文件数据存储并指定read函数为负载
函数。这个负载
函数,将MAT文件中的数据加载到结构数组中。若要从training文件夹的子文件夹中读取文件,请设置“包含子文件夹”
选择符合事实的
.
预览数据存储。返回的结构包含来自第一个文件的单个序列。
对于标签,创建一个文件数据存储并指定read函数为可读标签
函数,在示例的最后定义。这个可读标签
函数从子文件夹名称中提取标签。
预览数据存储。输出对应于第一个文件的标签。
转换和组合数据存储
为了将序列数据从预测器的数据存储中输入到深度学习网络中,序列的小批量必须具有相同的长度。属性转换数据存储焊盘序列
函数,该函数定义在数据存储的末尾,用于填充或截断序列,使其长度为20。
预览转换后的数据存储。输出对应于第一个文件中的填充序列。
要将来自两个数据存储的预测器和标签都输入到深度学习网络中,可以使用结合
函数。
预览组合数据存储。数据存储返回1×2单元格数组。第一个元素对应于预测器。第二个元素对应于标签。
ans =1×2单元阵列{12×20双}{[1]}
定义LSTM网络体系结构
定义LSTM网络架构。指定输入数据的特征数量作为输入大小。指定一个包含100个隐藏单元的LSTM层,并输出序列的最后一个元素。最后,指定输出大小等于类数的全连接层,然后是softmax层和分类层。
指定训练选项。将解算器设置为“亚当”
和“GradientThreshold”
到2。将最小批量大小设置为27,并将最大历元数设置为75。数据存储不支持洗牌,所以设置万博1manbetx“洗牌”
到“从来没有”
.
因为迷你批很小,序列很短,所以CPU更适合于训练。集“执行环境”
到“cpu”
.如果需要在GPU上进行训练,请设置“执行环境”
到“自动”
(默认值)。
使用指定的培训选项培训LSTM网络。
测试网络
使用与训练数据相同的步骤,创建包含保留测试数据的转换数据存储。
使用经过训练的网络对测试数据进行预测。
根据测试数据计算分类精度。要获取测试集的标签,请使用read函数创建一个文件数据存储可读标签
并指定包含子文件夹。属性,指定输出是垂直连接的“UniformRead”
选择符合事实的
.
功能
这个可读标签
函数从指定的文件名上的类别中提取标签一会
.
这个焊盘序列
函数填充或截断中的序列数据。X
具有指定的序列长度,并在一个1乘1单元格中返回结果。