此示例显示了如何通过提取激活来调查和可视化LSTM网络学到的功能。
负载预估计的网络。日本vOwelsnet
如[1]和[2]中所述,是在日本元音数据集上训练的LSTM网络。它是按序列长度分类的序列训练,小批量大小为27。
加载日本vOwelsnet
查看网络体系结构。
net.layers
ANS = 5x1层阵列带有层:1'sequenceInput'序列输入序列输入,带12个维度2'lstm'lstm lstm,带有100个隐藏单元3'FC'完全连接的9个完全连接的层4'SoftMax'Softmax'Softmax'SoftMax Softmax 5'SoftMax 5'ClastOutput'分类'输出crossentropyex,具有“ 1”和其他8个类别
加载测试数据。
[xtest,ytest] = japanyvowelstestdata;
可视化图中的第一个时间序列。每行都对应于功能。
x = xtest {1};图图(xtest {1}')xlabel(“时间步长”) 标题(“测试观察1”)numFeatures = size(xtest {1},1);传奇(“特征 ”+字符串(1:数字),'地点',,,,“东北”)
对于序列的每个时间步,请在该时间步中获得LSTM层(第2层)的激活输出,并更新网络状态。
sequenceLength = size(x,2);idxlayer = 2;outputsize = net.layers(idxlayer).numhidendunits;为了i = 1:sequenceLength特征(:,i)=激活(net,x(:,i),idxlayer);[net,ypred(i)] = classifyAndUpDateState(net,x(:,i));结尾
使用热图可视化前10个隐藏单元。
图热图(功能(1:10,:));Xlabel(“时间步长”)ylabel(“隐藏单位”) 标题(“ LSTM激活”)
热图显示了每个隐藏单元的强烈激活和突出激活如何随时间变化的方式。
[1] M. Kudo,J。Toyama和M. Shimbo。“使用传递区域的多维曲线分类。”图案识别字母。卷。20,编号11-13,第1103–1111页。
[2]UCI机器学习存储库:日语元音数据集。https://archive.ics.uci.edu/ml/datasets/japanese+vowels
激活
|Bilstmlayer
|lstmlayer
|sequenceInputlayer
|训练
|火车网