Excel表格对比函数,excel表格数据对比找差异
最近,进行了一项对比实验,以观察通过修改激活函数对图像分类准确性的影响,记录如下:
一.理论基础
1.1激活功能
1.2 elu论文(快速准确的深度网络学习)
指数线性单位(ELUS))
1.2.1摘要
文中提到elu函数可以加快训练速度,提高分类精度。它具有以下特点:
1)elu由于其积极的特性,可以像relu、lrelu、prelu、PRELU一样缓解梯度消失的问题。
2)与relu相比,elu有一个负值,可以推动激活单元的平均输出值更接近0,达到
批处理规范化的效果和计算量的减少。(平均输出值接近0可以减少偏移效应,使阶梯
接近自然梯度。)
3)虽然3)Lrelu和prelu有负值,但不能保证是噪声稳定的停用状态。
4)Elu为负时为指数函数,对输入特征只有定性而无定量。
1.2.2 .偏移校正加速学习
为了减少不必要的换档影响,进行了以下改变:(I)输入单元的激活可以
以零为中心,或者(ii)可以使用具有负值的激活函数。让我们介绍一个新的
激活函数具有负值,同时保持正参数即elus的特征。
1.2.4实验
作者将elu函数应用于非监督学习中的自动编码器和监督学习中的卷积神经网络。
Elu和relu,lrelu,SReLU做对比实验;选择数据集mnist、cifar10和cifar100。
2 cifar-10的ALL-CNN
2.1结构设计
全CNN结构来自论文(力求简洁:
所有卷积网)的主要工作是用stride=2的卷积代替池层,提出了一些全卷积网络架构。当kernel=3时,效果最好,最合适,以此类推。很好理解,效果也不错。在没有使用resnet等一些更大的网络结构的情况下,比原来的cnn要好。
附:
Lrelu实现:def lrelu (x,leak=0.2,name= lrelu ):return TF . maximum(x,leak * x) prelu实现:def parametric _ relu(_ x):alphas=TF . get _ variable( alpha ),_x.get_shape()[-1],initializer=TF . constant _ initializer(0.25),Dtype=TF . float 32)pos=TF . nn . relu(_ x)neg=alphas *(_ x-ABS(_ x参数:x:张量,4D BHWD输入映射n_out:整数,输入映射深度phase_train:布尔tf。变量,true表示训练阶段作用域:string,变量作用域返回:normed:batch-normalized maps with TF . variable _ scope(scope):beta=TF。Variable(tf.constant(0.0,shape=[n_out]),name=beta ,trainible=True)gamma=TF。Variable(tf.constant(1.0,shape=[n_out]),name=gamma ,trainiable=True)TF . add _ to _ collection( bias ,beta)TF . add _ to _ collection( weights ,gamma) batch_mean,batch_var=tf.nn.moments(x,[0,1,2],name= moments )Ema=TF . train . exponentialmovingaverage(decay=0.99)def mean _ var _ with _ update():Ema _ apply _ op=Ema . applyaverage (batch _ var)) mean,var=mean _ var _ with _ update()normalized=TF . nn . batch _ normalization(x,mean,var,beta,gamma,1e-3) return normalized关于cifar10的测试结果如下:
有损耗的情况下,所有结果如下:relu bnelupreluelubnrelu
所有测试的准确度如下
relu bn组合的准确率最高,relu bnelupreluelubnrelu。
可以看出,elu在激活函数中性能最好,但不需要添加BN,减少了BN的计算量。
3.cifar-100的所有CNN
Cifar100数据集
CIFAR-100 python版本,下载后解压,会出现在cifar-100-python: meta,test,train下。
三个文件,都是python用cPickle封装的Pickle对象
解压缩:tar-zxvf xxx.tar.gz
cifar-100-python/
cifar-100-python/file.txt~
cifar-100-python/train
cifar-100-python/测试
cifar-100-python/meta
定义取消拾取(文件):
导入图标
fo=打开(文件, rb )
dict=cPickle.load(fo)
fo.close()
返回字典
可以通过上面的代码转换成dict对象。测试和训练的字典包含以下元素:
Data——一个nx3072的numpy数组,每行是(32,32,3)的RGB图像,n代表图像的个数。
coarse _ labels —— 0-19范围内的N个元素的列表,对应于图像的大类别。
fine _ labels —— 0-99范围内的N个元素的列表,对应于图像的小类别。
Meta dict只包含fine_label_names,第I个元素对应其真实类别。二进制版本(我用的):
1个粗标签1个细标签3072个像素
…
1个粗标签1个细标签3072个像素
网络结构可以在cifar100的基础上直接输出100个类别,只对CIFAR 100的100个细标签进行分类,所以代码中以输入数据集的第二个值作为标签。(张量流cifar10代码)
Label_bytes=2 # 2对于CIFAR-100#取第二个标签100维结果。label=TF . cast(TF . striped _ slice(record _ bytes,[1],[label _ bytes]),tf.int32)在all CNN 9层上,大约50k步,relu bn
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。