matlab lstm工具箱,深度学习工具箱使用笔记---lstm网络(1)

matlab 深度学习工具箱使用笔记—lstm网络

在2017的版本之后,matlab上线了自己的lstm网络工具箱,至此,搭建简单的网络时,就可以只用工具包所提供的函数,并且matlab提供了GUI和训练过程界面,可以方便的使用,至于tensorflow的使用方法,将在以后的博文中讲解

data = chickenpox_dataset;%读取数据集

data = [data{:}];%将数据集变为数组的形式,此时得到的是一个1n维的数组,n代表n个时刻,其中存储的是每个时刻的值,即对于时序预测,只有发生的顺序,不存在实际的时间

figure

plot(data)

xlabel(“Month”)

ylabel(“Cases”)

title(“Monthy Cases of Chickenpox”)

numTimeStepsTrain = floor(0.9numel(data));%将90%的数据设定为训练集

dataTrain = data(1:numTimeStepsTrain+1);%定义训练集和测试集

dataTest = data(numTimeStepsTrain+1:end);%

mu = mean(dataTrain);%求均值和方差,为以后的归一化做准备

sig = std(dataTrain);

dataTrainStandardized = (dataTrain - mu) / sig;%归一化,这里是防止数据发散

XTrain = dataTrainStandardized(1:end-1);做了一个时序的错位,将后一个时刻的作为标签,标签和特征参量的大小对应

YTrain = dataTrainStandardized(2:end);

numFeatures = 1;输入特征维数

numResponses = 1;输出特征维数

numHiddenUnits = 200;每一层lstm网络中存在多少神经元

layers = [ …

sequenceInputLayer(numFeatures)输入层,参数是输入特征维数

lstmLayer(numHiddenUnits)lstm层,如果想要构建多层lstm,改几个参数就行了

fullyConnectedLayer(numResponses)全连接层,也就是输出的维数

regressionLayer];该参数说明是在进行回归问题,而不是分类问题

options = trainingOptions(‘adam’, …

‘MaxEpochs’,250, …这个参数是最大迭代次数,即进行250次训练,每次训练后更新神经网络参数

‘GradientThreshold’,1, …

‘InitialLearnRate’,0.005, …学习率

‘LearnRateSchedule’,‘piecewise’, …

‘LearnRateDropPeriod’,125, …训练125次后学习率下降,衰落因子为0.2

‘LearnRateDropFactor’,0.2, …

‘Verbose’,0, …

‘Plots’,‘training-progress’);

net = trainNetwork(XTrain,YTrain,layers,options);

以上是神经网络搭建与训练部分的代码,来源于2018官方文档,各参数的详细说明已经写在了参数旁边

有几个问题,与tensor不同,没有一个类似于timestep的参数来确定输入究竟和多少个参数相关,怀疑是因为lstm网络中存在自己的遗忘门和更新门,并且lstm神经网络是步进式的输入,只要有网络的的储存的状态,就可以针对输入,得到输出。

具体的预测部分的代码将在下一次的博文中进行探讨

你可能感兴趣的:(matlab,lstm工具箱)