此帖最后由yexu55066在2016-8-16 02:17中编辑
我用的DeepLearnToolbox的代码改为一维卷积神经网络,识别一维心电信号。 训练样本40000均分为三类。 训练后,训练部分的错误率超高,直到测试集为止,都将所有信号分为其中一类。 各种参数卷积核大小的学习率等无论如何变更都不会改变。
寻求可能发生这种情况的原因,有解决办法吗? 还是有可以直接使用的一维卷积神经网络? 550669220@qq.com? 感谢
这是训练部分错误率的图表
trainerror.jpg(14.88kb,下载次数: 19 )。
2016-8-16上传01:45
然后修正部分的代码如下所示。 cnnsetup:
ifstrcmp(net.layers{l}.type,' c ' ) )。
mapsize(1) mapsize(1)- net.layers{l}.kernelsize 1;
fan _ out=net.layers { l }.output maps * net.layers { l }.kernelsize; %要学习的权重数
forj=1: net.layers { l }.output maps % output map
fan _ in=input maps * net.layers { l }.kernelsize; %有多少参数连接到上一层
for I=1:输入地图%输入地图
net.layers { l }.k { I } { j }=(rand (net.layers { l }.kernelsize,1(-0.5 ) *2*sqrt )6/) fan _ infan _ infan _ n _ sqrt
cnnff
for l=2 : n
ifstrcmp(net.layers{l}.type,' c ' ) )。
forj=1: net.layers { l }.output maps % foreachoutputmap
z=zeros (size (net.layers { l-1 }.a {1} )- [net.layers{l}.kernelsize-1 0 0] );
for j=1:输入映射
z=convn(net.layers(L-1 ).a (j ),ones ) net.layers (l ),1 )/(net.layers (l ).scale ),' valid ) %! 替换为可变
net.layers { l }.a { j }=z (1: net.layers { l }.scale : end,1, );
cnnbp
net.layers { l }.d { j }=net.layers { l }.a { j }.* (1- net.layers { l }.a { j } ) (扩展) net.layers