matconvnet 实现 Batch Normalization和dropout

 

采用matconvnet常常会出现如下情况,即训练出现了过拟合。针对过拟合常用的方法有正则化和dropout,以及batch normalization。

目前认为,卷积层后可以用batch normalization,不需要用dropout。而全连接层,参数较多,dropout效果较好。

matconvnet 实现 Batch Normalization和dropout

以matconvnet中mnist数据集为例,opts.batchNormalization定义是否batch 归一化

matconvnet 实现 Batch Normalization和dropout

如下也是在cnn_mnist_init.m文件中,定义batchNormalization位置,batchNormalization一般添加在卷积层之后。

matconvnet 实现 Batch Normalization和dropout

需要注意的是,插入的层数,比如第一层后插入了batchNormalization,net的总层数会加1,第一层之后的每一层层数次序都会改变。

而添加dropout,直接在cnn_mnist_init.m文件中的,net.layers = {} ;结构体中添加即可。

matconvnet 实现 Batch Normalization和dropout