深度学习工具箱使用笔记---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.9
numel(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神经网络是步进式的输入,只要有网络的的储存的状态,就可以针对输入,得到输出。
具体的预测部分的代码将在下一次的博文中进行探讨

  • 8
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
首先,需要导入深度学习工具箱,比如TensorFlow或PyTorch。然后,可以使用这些工具箱中提供的函数来构建attention-lstm模型。具体步骤如下: 1. 定义输入层,包括输入数据的形状和类型。 2. 定义LSTM层,可以设置LSTM的隐藏层大小和层数。 3. 定义attention层,可以使用Bahdanau或Luong的attention机制。 4. 将LSTM层和attention层连接起来,形成attention-lstm模型。 5. 编译模型,设置损失函数和优化器。 6. 训练模型,使用训练数据进行训练。 7. 测试模型,使用测试数据进行测试。 以下是一个使用TensorFlow构建attention-lstm模型的示例代码: ```python import tensorflow as tf # 定义输入层 inputs = tf.keras.layers.Input(shape=(max_len,), dtype=tf.int32) # 定义embedding层 embedding = tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embedding_dim)(inputs) # 定义LSTMlstm = tf.keras.layers.LSTM(units=hidden_size, return_sequences=True)(embedding) # 定义attention层 attention = tf.keras.layers.Attention()([lstm, lstm]) # 将LSTM层和attention层连接起来 output = tf.keras.layers.Concatenate()([lstm, attention]) # 定义输出层 outputs = tf.keras.layers.Dense(units=num_classes, activation='softmax')(output) # 定义模型 model = tf.keras.models.Model(inputs=inputs, outputs=outputs) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 model.fit(x_train, y_train, batch_size=batch_size, epochs=num_epochs, validation_data=(x_test, y_test)) # 测试模型 model.evaluate(x_test, y_test) ``` 注意:以上代码仅为示例,实际使用时需要根据具体情况进行修改。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值