主要内容

predictAndUpdateState

递归神经网络预测反应使用培训和更新网络状态

描述

你可以预测使用训练有素的深度学习网络CPU或GPU。使用GPU需要并行计算工具箱™和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)指定使用的硬件需求ExecutionEnvironment名称-值参数。

例子

(updatedNet,Y)= predictAndUpdateState (recNet,序列)预测数据的响应序列使用递归神经网络训练recNet并更新网络状态。

这个函数只支持递归神经网络。金宝app输入recNet必须至少有一个周期性的一层一层如LSTM或自定义层与状态参数。

(updatedNet,Y)= predictAndUpdateState (recNet,X1,…, XN)预测的响应数值或单元数组中的数据X1、…XN多输入网络recNet。输入对应于网络的输入recNet.InputNames(我)

(updatedNet,Y)= predictAndUpdateState (recNet,混合)让使用多输入网络的预测recNet与数据的混合数据类型。

[updatedNet,日元…,)= predictAndUpdateState (___)预测的反应多输出网络的输出使用任何以前的输入参数。输出Yj对应于网络的输出recNet.OutputNames (j)。返回类别分类输出层的输出设置ReturnCategorical选项1(真正的)。

(___)= predictAndUpdateState (___,名称=值)使得预测额外选项指定一个或多个名称参数使用任何以前的语法。例如,MiniBatchSize = 27使得预测使用mini-batches大小27。

提示

当你与不同长度的序列进行预测,mini-batch大小会影响填料添加到输入数据的数量,从而导致不同的预测值。尝试使用不同的值,看看哪种最与你的网络。要指定mini-batch大小和填充选项,可以使用MiniBatchSizeSequenceLength选项,分别。

例子

全部折叠

递归神经网络预测反应使用培训和更新网络状态。

负载JapaneseVowelsNetpretrained长短期记忆(LSTM)网络训练中描述的日本元音数据集[1]和[2]。这个网络是训练序列按序列长度与mini-batch 27的大小。

负载JapaneseVowelsNet

查看网络体系结构。

net.Layers
ans x1 = 5层阵列层:1“sequenceinput”序列输入序列输入12维度2的lstm lstm lstm 100隐藏单位3 fc的完全连接9完全连接层4的softmax softmax softmax 5 classoutput的分类输出crossentropyex ' 1 ', 8其他类

负载测试数据。

(XTest, tt) = japaneseVowelsTestData;

循环时间的步骤序列。预测每个时间步的分数和更新网络状态。

X = XTest {94};numTimeSteps =大小(X, 2);i = 1: numTimeSteps v = X(:,我);(净,分数)= predictAndUpdateState(净,v);分数(:,i) =分数;结束

情节预测分数。情节展示了预测分数之间的时间变化的步骤。

一会=字符串(net.Layers(结束). class);图线=情节(分数);传说numTimeSteps xlim ([1]) (“类”= +一会,位置“西北”)包含(“时间步”)ylabel (“分数”)标题(“预测成绩随着时间的步骤”)

突出的预测成绩随着时间的步骤正确的类。

trueLabel = tt (94)
trueLabel =分类3
行(trueLabel)。线宽= 3;

图包含一个坐标轴对象。坐标轴对象与标题预测成绩随着时间的步骤包含9线类型的对象。这些对象代表一班、二班、类3类4类5类6、7类,类8类9。

显示最后一次一步预测在一个条形图。

图酒吧(分数)标题(“最终预测评分”)包含(“类”)ylabel (“分数”)

图包含一个坐标轴对象。坐标轴对象标题最终预测评分包含一个对象类型的酒吧。

输入参数

全部折叠

递归神经网络训练,指定为一个SeriesNetwork或者一个DAGNetwork对象。你可以通过导入pretrained训练网络的网络或通过训练自己的网络使用trainNetwork函数。

recNet是一个递归神经网络。它必须至少有一个周期性层(例如,一个LSTM网络)。

顺序或时间序列数据,指定为一个N1单元阵列的数字数组,N是观测的数量,一个数值数组代表一个序列,或数据存储。

细胞数组或数字数组输入,包含序列的数值数组的尺寸取决于类型的数据。

输入 描述
向量序列 c——- - - - - -年代矩阵,c的特征序列的数量和吗年代是序列长度。
一维图像序列 h——- - - - - -c——- - - - - -年代数组,hc对应于图像的高度和数量的渠道,分别年代是序列长度。
二维图像序列 h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c对应的高度、宽度和通道的图像,分别年代是序列长度。
三维图像序列 h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c对应高度、宽度、深度和通道数量的3 d图像,分别年代是序列长度。

数据存储输入的数据存储必须返回数据作为一个单元阵列的序列或表的第一列包含序列。序列数据的尺寸必须与上面的表相对应。

与多个输入数字或细胞阵列网络。

序列预测输入,输入必须是一个数字代表一个数组序列或序列单元阵列,在预测的格式描述的格式相匹配序列参数描述。形象和功能预测输入,输入必须是数值型数组和预测的格式必须符合下列之一:

数据 格式
二维图像

h——- - - - - -w——- - - - - -c数字数组,h,w,c高度,宽度,分别和通道图像的数量。

三维图像 h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c的高度、宽度、深度和通道的图像,分别。
特性数据

c1列向量,c的数量特征。

为一个例子,演示如何训练一个网络有多个输入,明白了列车网络形象和特征数据

混合数据,指定为以下之一。

数据类型 描述 示例使用
TransformedDatastore 数据存储转换批次的数据从底层数据存储读取使用自定义转换函数

  • 使用网络与多个输入作出预测。

  • 变换输出的数据存储不支持金宝apppredictAndUpdateState所以他们所需的格式。

  • 自定义转换应用到数据存储输出。

CombinedDatastore 数据存储,读取从两个或两个以上的底层数据存储

  • 使用网络与多个输入作出预测。

  • 合并来自不同数据源的预测因子。

自定义mini-batch数据存储 自定义数据存储返回mini-batches的数据

使用数据进行预测,其他数据存储的格式不支持。金宝app

有关详细信息,请参见开发自定义Mini-Batch数据存储

您可以使用其他通过使用内置的数据存储进行预测变换结合功能。这些函数可以读取数据存储的数据转换为表或单元阵列格式要求predictAndUpdateState。有关更多信息,请参见数据存储深度学习

数据存储必须返回一个表或一个单元阵列中的数据。自定义mini-batch数据存储必须输出表。数据存储的格式输出取决于网络体系结构。

数据存储输出 示例输出

单元阵列与numInputs列,numInputs是网络输入的数量。

输入的顺序的InputNames网络的属性。

data =阅读(ds)
data = 4×3单元阵列{12×50双}{28×1双}{12×50双}{28×1双}{12×50双}{28×1双}{12×50双}{28×1双}

序列预测输入,输入必须是一个数字代表一个数组序列或序列单元阵列,在预测的格式描述的格式相匹配序列参数描述。形象和功能预测输入,输入必须是数值型数组和预测的格式必须符合下列之一:

数据 格式
二维图像

h——- - - - - -w——- - - - - -c数字数组,h,w,c高度,宽度,分别和通道图像的数量。

三维图像 h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c的高度、宽度、深度和通道的图像,分别。
特性数据

c1列向量,c的数量特征。

为一个例子,演示如何训练一个网络有多个输入,明白了列车网络形象和特征数据

提示

数字数组转换为数据存储,使用ArrayDatastore

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:[updatedNet Y] = predictAndUpdateState (recNet C MiniBatchSize = 27)使得预测使用mini-batches大小27。

大小mini-batches用于预测,指定为一个正整数。大mini-batch大小需要更多的内存,但会导致更快的预测。

当你与不同长度的序列进行预测,mini-batch大小会影响填料添加到输入数据的数量,从而导致不同的预测值。尝试使用不同的值,看看哪种最与你的网络。要指定mini-batch大小和填充选项,可以使用MiniBatchSizeSequenceLength选项,分别。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

性能优化,指定为以下之一:

  • “汽车”——自动应用一些优化适合输入网络和硬件资源。

  • “没有”——禁用所有加速度。

使用加速度选项“汽车”可以提供性能优势,但在初始运行时间增加为代价的。后续调用与兼容的参数是更快。使用性能优化计划多次调用该函数时使用新的输入数据。

硬件资源,指定为以下之一:

  • “汽车”——使用GPU如果可用;否则,使用CPU。

  • “图形”——使用GPU。使用GPU需要并行计算工具箱和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。

  • “cpu”——使用CPU。

选择返回分类标签,指定为0(虚假的)或1(真正的)。

如果ReturnCategorical1(真正的),那么函数返回分类标签分类输出层。否则,函数返回预测分数分类输出层。

选项板、截断或分裂的输入序列,指定为以下之一:

  • “最长”——在每个mini-batch垫序列有相同的长度最长的序列。这个选项不丢弃任何数据,尽管填充网络会引入噪声。

  • “最短”——在每个mini-batch截断序列有相同的长度最短的序列。这个选项可以确保没有添加填充物,在丢弃的成本数据。

  • 正整数,对于每个mini-batch,垫到最近的多个序列的最长长度大于指定mini-batch序列长度,然后把序列分割成较小的指定长度的序列。如果发生分裂,那么软件创建额外的mini-batches。使用这个选项如果完整的序列不适合在内存中。或者,试着减少序列的数量每mini-batch通过设置MiniBatchSize选择一个较低的值。

了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

填充方向或截断,指定为以下之一:

  • “正确”——垫或截断序列在右边。序列开始在同一时间步和软件截断或添加填充序列的结束。

  • “左”——垫或截断序列在左边。软件截断或添加填充序列,序列的开始结束同时一步。

因为反复层过程序列数据一次一个时间步,当复发性层OutputMode属性是“最后一次”,任何填充在最后时间步可以负面影响层的输出。垫或截断左边序列数据,设置SequencePaddingDirection选项“左”

sequence-to-sequence网络(当OutputMode属性是“序列”对于每一个周期性层),任何填充在第一次的步骤可以负面影响的预测更早的时间步骤。垫或截断序列数据在右边,设置SequencePaddingDirection选项“正确”

了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂

盘输入序列值,指定为一个标量。

选择是有效的只有当SequenceLength“最长”或者一个正整数。不垫序列,因为这样做可以传播在整个网络错误。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出参数

全部折叠

网络更新。updatedNet相同类型的网络作为输入网络。

预测成绩或反应,作为数字数组,返回分类数组,或一个单元阵列。的格式Y取决于问题的类型。

下表描述了格式分类任务。

任务 ReturnCategorical 格式
Sequence-to-label分类 0(假) N——- - - - - -K矩阵,N是观测的数量,和K类的数量吗
1(真正的) N1分类向量,N是观测的数量吗
Sequence-to-sequence分类 0(假)

N1单元阵列矩阵,N是观测的数量。序列矩阵K行,K类的数量。每个序列都有相同数量的时间步骤后,相应的输入序列SequenceLength选择是应用于每个mini-batch独立。

1(真正的)

N1单元阵列分类序列,N是观测的数量。定序列分类向量与相同数量的时间步骤后,相应的输入序列SequenceLength选择是应用于每个mini-batch独立。

sequence-to-sequence分类任务有一个观察,序列可以是一个矩阵。在这种情况下,格式的Y取决于ReturnCategorical选择:

  • 如果ReturnCategoical0(假),然后Y是一个K——- - - - - -年代矩阵的分数,K类的数量,年代是时间的总数在相应的输入序列的步骤。

  • 如果ReturnCategoical1(真正的),然后Y是一个1——- - - - - -年代分类向量,年代是时间的总数在相应的输入序列的步骤。

下表描述了格式回归任务。

任务 格式
Sequence-to-one回归 N——- - - - - -R矩阵,N是观察和的数量吗R是反应的数量。
Sequence-to-sequence回归

N1单元阵列的数字序列,N是观测的数量。序列矩阵R行,R是反应的数量。每个序列都有相同数量的时间步骤应用后相应的输入序列SequenceLength每个独立mini-batch选项。

sequence-to-sequence问题有一个观察,序列可以是一个矩阵。在这种情况下,Y是一个矩阵的回答。

预测成绩或反应的网络有多个输出,作为数字数组,返回分类数组或单元数组。

每个输出Yj对应于网络的输出recNet.OutputNames (j)格式的描述Y输出参数。

算法

当你训练一个网络使用trainNetwork函数,或者当你使用预测或验证功能DAGNetworkSeriesNetwork对象,软件执行这些计算使用单精度浮点算术。包括功能训练、预测和验证trainNetwork,预测,分类,激活。软件使用单精度算法训练网络时使用的cpu和gpu。

引用

[1]m .奖赏,富山,和m . Shimbo。“多维曲线分类使用通过地区。”模式识别的字母。11 - 13号20卷,第1111 - 1103页。

[2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音

扩展功能

版本历史

介绍了R2017b