主要内容

sim卡

模拟神经网络

语法

(Y, Xf, Af) = sim(净,X, Xi, Ai, T)
[Y,Xf,Af] = sim(net,{Q TS},Xi,Ai)
[Y,…] = sim(净,…,useParallel,…)
[Y,…] = sim(净,…,useGPU,…)
[Y,…] = sim(净,…,showResources,…)
[Ycomposite,…] = sim(净、Xcomposite…)
[Ygpu,…] = sim(净、Xgpu…)

寻求帮助

类型帮助网络/ sim

描述

sim卡模拟神经网络。

(Y, Xf, Af) = sim(净,X, Xi, Ai, T)需要

网络

X

网络的输入

西

初始输入延迟条件(默认为零)

人工智能

初始层延迟条件(默认为零)

T

网络目标(默认值= 0)

并返回

Y

网络输出

Xf

最终输入延迟条件

房颤

最终层延迟条件

sim卡通常通过将神经网络作为函数调用来隐式调用。例如,这两个表达式返回相同的结果:

Y = sim(net,x,xi,ai)

请注意,参数西人工智能Xf,房颤是可选的,只需要用于具有输入或层延迟的网络。

信号参数可以有两种格式:单元格数组或矩阵。

单元格数组格式是最容易描述的。对于有多个输入和输出的网络,它是最方便的,并且允许输入序列呈现:

X

——- - - - - -TS单元阵列

每个元素X{我,ts}是一个国际扶轮——- - - - - -矩阵。

西

——- - - - - -ID单元阵列

每个元素习{i、k}是一个国际扶轮——- - - - - -矩阵。

人工智能

——- - - - - -LD单元阵列

每个元素Ai {i、k}是一个如果——- - - - - -矩阵。

T

没有——- - - - - -TS单元阵列

每个元素X{我,ts}是一个用户界面——- - - - - -矩阵。

Y

没有——- - - - - -TS单元阵列

每个元素{我,ts}是一个用户界面——- - - - - -矩阵。

Xf

——- - - - - -ID单元阵列

每个元素Xf {i、k}是一个国际扶轮——- - - - - -矩阵。

房颤

——- - - - - -LD单元阵列

每个元素房颤{i、k}是一个如果——- - - - - -矩阵。

在哪里

net.numInputs
net.numLayers
没有 net.numOutputs
ID net.numInputDelays
LD net.numLayerDelays
TS

时间步长

批量大小

国际扶轮 net.inputs{我}.size
如果 net.layers{我}.size
用户界面 net.outputs{我}.size

的列西人工智能Xf,房颤从最古老的延迟条件到最近的:

习{i、k}

输入在时间ts = k - ID

Xf {i、k}

输入在时间ts = ts + k - ID

Ai {i、k}

层的输出在时间ts = k - LD

房颤{i、k}

层的输出在时间ts = ts + k - LD

如果只模拟一个时间步长,可以使用矩阵格式(t = 1).它对只有一个输入和输出的网络很方便,但也可以用于有更多输入和输出的网络。

每个矩阵参数是通过在一个矩阵中存储相应的cell array参数的元素来找到的:

X

(国际扶轮的总和)——- - - - - -矩阵

西

(国际扶轮的总和)——- - - - - -(ID *问)矩阵

人工智能

(Si)的总和——- - - - - -(LD *问)矩阵

T

(Ui)的总和——- - - - - -矩阵

Y

(Ui)的总和——- - - - - -矩阵

Xf

(国际扶轮的总和)——- - - - - -(ID *问)矩阵

房颤

(Si)的总和——- - - - - -(LD *问)矩阵

[Y,Xf,Af] = sim(net,{Q TS},Xi,Ai)在使用单元格数组表示法时,用于没有输入的网络。

[Y,…] = sim(净,…,useParallel,…)[Y,…] = sim(净,…,useGPU,…),或[Y,…] = sim(净,…,showResources,…)(或作为函数调用的网络)接受可选的名称/值对参数来控制如何执行计算。如果并行计算工具箱可用,其中两个选项允许使用并行工作器或GPU设备进行更快的训练或在更大的数据集上进行训练。以下是可选的名称/值对:

“useParallel”、“不”

计算在普通的MATLAB线程上进行。这是默认值“useParallel”设置。

“useParallel”,“是的”

如果打开并行池,则会在并行工作器上进行计算。否则,计算将在正常的MATLAB线程上进行。

“useGPU”、“不”

CPU进行计算。这是默认的useGPU设置。

“useGPU”,“是的”

如果当前gpuDevice是支持的GPU,则会在当前gpuDevice上进行计算(有关GPU需求,请参阅并行计金宝app算工具箱)。如果不支持当前的gpuDevice,则CPU仍需进行计算。金宝app如果“useParallel”“是的”当一个并行池打开时,每个拥有唯一GPU的worker使用该GPU,其他worker在各自的CPU核上运行计算。

“useGPU”、“只”

如果没有打开并行池,则此设置与“是的”.如果一个并行池是打开的,那么只使用具有唯一gpu的工作人员。但是,如果一个并行池是打开的,但是没有支持的gpu可用,那么计算将恢复到在所有工作cpu金宝app上执行。

“showResources”、“不”

请勿在命令行显示所使用的计算资源。这是默认设置。

“showResources”,“是的”

在命令行显示实际使用的计算资源的摘要。如果请求并行或GPU计算,但未打开并行池或支持的GPU不可用,则实际资源可能与请求的资源不一致。金宝app当使用并行worker时,描述每个worker的计算模式,包括池中未使用的worker。

[Ycomposite,…] = sim(净、Xcomposite…)获取Composite数据并返回Composite结果。如果使用Composite数据,则“useParallel”自动设置为“是的”

[Ygpu,…] = sim(净、Xgpu…)获取gpuArray数据并返回gpuArray结果。如果使用gpuArray数据,则“useGPU”自动设置为“是的”

例子

在下面的例子中sim卡函数通过调用神经网络对象()作为函数。

模拟前馈网络

这个示例加载一个映射解剖测量的数据集x身体脂肪百分比t.一个由10个神经元组成的前馈网络被创建,并根据这些数据进行训练,然后进行模拟。

[x, t] = bodyfat_dataset;网= feedforwardnet (10);网=火车(净,x, t);y =净(x);

模拟NARX时间序列网络

这个例子训练了一个有外部输入的开环非线性自回归网络,以模拟一个由控制电流定义的悬浮磁体系统x以及磁铁的垂直位置响应t,然后模拟网络。这个函数preparets在训练和模拟前准备数据。它创造了开环网络的综合输入xo,它包含两个外部输入x和之前的位置值t.它还准备延迟状态西

[x, t] = maglev_dataset;网= narxnet (10);[xo, xi, ~,] = preparets(净,x, {}, t);网=火车(净,xo,ξ);y =净(xo, xi)

同样的系统也可以用闭环形式进行模拟。

netc = closeloop(净);视图(netc) (xcξ,人工智能,tc) = preparets (netc, x, {}, t);yc = netc (xcξ,ai);

在并行池上进行并行模拟

使用并行计算工具箱,您可以模拟和训练网络更快和更大的数据集比可以在一台PC上。在这里,培训和仿真是在并行的MATLAB工作者之间进行的。

parpool [X,T] = vinyl_dataset;网= feedforwardnet (10);网=火车(净,X, T,‘useParallel’,‘是的’,‘showResources’,‘是的’);净(Y = X,‘useParallel’,‘是的’);

模拟在gpu上

使用Composite值手动分发数据,并以Composite值的形式返回结果。如果数据是在分布时加载的,那么数据集的每一部分都必须适合RAM,而整个数据集仅受所有工作人员的总RAM的限制。

Xc =复合;for i=1:numel(Xc) Xc{i} = X+rand(size(X))*0.1;%使用真实数据而不是随机数据结束Yc = net(Xc,'showResources','yes');

如果支持并行计算工具箱,可以使用当前的GPU设备来模拟网络。金宝app

gpuDevice %检查是否有支持的GPU Y = net(X金宝app,'useGPU','yes','showResources','yes');

手动将数据放到GPU上,并在GPU上得到结果:

Xgpu = gpuArray (X);Ygpu =净(Xgpu showResources, '是的');Y =收集(Ygpu);

为了并行运行,与唯一gpu相关联的worker可以利用该硬件,而其他worker使用cpu:

净(Y = X,‘useParallel’,‘是的’,‘useGPU’,‘是的’,‘showResources’,‘是的’);

只使用具有唯一gpu的worker可能会导致更高的速度,因为CPU worker可能跟不上。

净(Y = X,‘useParallel’,‘是的’,‘useGPU’,‘只’,‘showResources’,‘是的’);

算法

sim卡使用这些属性来模拟网络

net.numInputs,net.numLayers网。outputConnect,净。biasConnect网。我nputConnect, net.layerConnect

这些属性决定了网络的权值和偏差值以及与每个权值相关的延迟数:

网。IW {i, j}。LW {i, j}。我{}net.inputWeights {i, j} .delays net.layerWeights {i, j} .delays

这些函数属性说明了如何操作sim卡将权重和偏差值应用于输入以获得每一层的输出:

net.inputWeights {i, j}。weightFcn net.layerWeights {i, j}。weightFcn net.layers{我}.netInputFcn net.layers{我}.transferFcn

另请参阅

|||

之前介绍过的R2006a