首页 > 编程知识 正文

matlab保存训练好的神经网络,cnn各种网络模型的参数比较

时间:2023-05-04 18:09:27 阅读:12870 作者:2717

我用Matconvnet上的Matconvnet对CNN进行二进制分类。 现在我想用Python的Keras做到这一点。 互联网一点也不复杂。 我在Matconvnet上实现了96%的精度。 但是,对于Keras,即使尽最大努力确保所有设置都与以前完全相同,也无法获得相同的结果。 更糟的是,这个模型根本不起作用。 在

这里有设定的详细内容。 感谢任何想法和帮助! 输入

图像大小为20*20。 培训规模为400,测试规模为100,验证规模为132。 使用mat convnet :20 * 20 * sample _-size方法保存的图像

Keras :图像存储在sample_size*20*20*1方法中

CNN结构

(3)3)转换)2)最大池(完全连接)-softmax-loglossMatconvnet )使用卷积层而不是完全连接层。 代码如下。 function net=initializeCNNA (

f=1/100;

net.layers={};

net.Layers{end1}=struct('type ',' conv ',

' weights ',{ f * randn (3,3,1,3,' single ',zeros ) 1,3,' single ' ) },

' stride ',1,

' pad ',0;

net.Layers{end1}=struct('type )、' pool ),

' method ',' max ',

' pool ',[2 2],

' stride ',2,

' pad ',0;

net.Layers{end1}=struct('type ',' conv ',

' weights ',{ f * randn (9,9,3,2,' single ',zeros ) 1,2,' single'},

' stride ',1,

' pad ',0;

net.Layers{end1}=struct('type ',' softmaxloss );

net=VL_simplenn_tidy(net );

Keras:

^{pr2}$

损耗函数Matconvnet:softmaxloss

Keras:binary_crossentropy

优化程序Matconvnet :来自新加坡的trainOpts.batchSize=50;

trainOpts.numEpochs=20;

trainOpts.learningRate=0.001;

trainOpts.weightDecay=0.0005;

trainOpts.momentum=0.9;

Keras :新加坡元SGD=optimizers.SGD(lr=0.001,momentum=0.9,decay=0.0005 ) ) ) ) ) )。

model.com pile (loss=' binary _ cross entropy ',

optimizer=sgd

测量结果=[ ' accuracy ' ] )

初始化:过滤器: n (0,0.1 ),偏差: 0

标准化:输入图像的平均值为0,标准偏差为1时,除标准化外没有批次标准化。 在

以上是我回顾的一面,以确认我复制正确。 但是我不知道为什么在Keras上不起作用。 以下是Matconvnet使用卷积层而不是完全连接层的推测: 这可能意味着更新参数的奇怪方法。 在

它们使用不同的算法应用具有不同参数意义的SGD。 在

也做了其他的尝试。 已将Keras优化程序更改为Adadelta ()。 没有改善。 在

改变网络结构,使之达到更深层次。 它在起作用! 在

但是我想知道Matconvnet为什么能用更简单的方法实现这个好结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。