ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:374.22KB ,
资源ID:20030594      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20030594.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(深度学习进阶笔记之三深入理解AlexnetWord下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

深度学习进阶笔记之三深入理解AlexnetWord下载.docx

1、ReLU Nonlinearity一般来说,刚接触神经网络还没有深入了解深度学习的小伙伴们对这个都不会太熟,一般都会更了解另外两个激活函数(真正往神经网络中引入非线性关系,使神经网络能够有效拟合非线性函数)tanh(x)和(1+e(-x)(-1),而ReLU(Rectified Linear Units) f(x)=max(0,x)。基于ReLU的深度卷积网络比基于tanh的网络训练块数倍,下图是一个基于CIFAR-10的四层卷积网络在tanh和ReLU达到25%的training error的迭代次数:实线、间断线分别代表的是ReLU、tanh的training error,可见ReLU比t

2、anh能够更快的收敛Local Response Normalization使用ReLU f(x)=max(0,x)后,你会发现激活函数之后的值没有了tanh、sigmoid函数那样有一个值域区间,所以一般在ReLU之后会做一个normalization,LRU就是稳重提出(这里不确定,应该是提出?)一种方法,在神经科学中有个概念叫“Lateral inhibition”,讲的是活跃的神经元对它周边神经元的影响。DropoutDropout也是经常挺说的一个概念,能够比较有效地防止神经网络的过拟合。 相对于一般如线性模型使用正则的方法来防止模型过拟合,而在神经网络中Dropout通过修改神经网

3、络本身结构来实现。对于某一层神经元,通过定义的概率来随机删除一些神经元,同时保持输入层与输出层神经元的个人不变,然后按照神经网络的学习方法进行参数更新,下一次迭代中,重新随机删除一些神经元,直至训练结束Data Augmentation其实,比较简单的增强模型性能,防止模型过拟合的方法是增加数据,但是其实增加数据也是有策略的,paper当中从256*256中随机提出227*227的patches(paper里面是224*224),还有就是通过PCA来扩展数据集。这样就很有效地扩展了数据集,其实还有更多的方法视你的业务场景去使用,比如做基本的图像转换如增加减少亮度,一些滤光算法等等之类的,这是一

4、种特别有效地手段,尤其是当数据量不够大的时候。文章里面,我认为的基本内容就是这个了,基本的网络结构和一些防止过拟合的小的技巧方法,对自己在后面的项目有很多指示作用。AlexNet On Tensorflowcaffe的AlexNet可以到/models/bvlc_alexnet/train_val.prototxt 去看看具体的网络结构,这里我会弄点基于Tensorflow的AlexNet, 代码在:http:/www.cs.toronto.edu/guerzhoy/tf_alexnet/from numpy import import osfrom pylab import import n

5、umpy as npimport matplotlib.pyplot as pltimport matplotlib.cbook as cbookimport timefrom scipy.misc import imreadfrom scipy.misc import imresizeimport matplotlib.image as mpimgfrom scipy.ndimage import filtersimport urllibfrom numpy import randomimport tensorflow as tffrom caffe_classes import class

6、_names train_x = zeros(1, 227,227,3).astype(float32) train_y = zeros(1, 1000) xdim = train_x.shape1: ydim = train_y.shape1 net_data = load(bvlc_alexnet.npy).item() def conv(input, kernel, biases, k_h, k_w, c_o, s_h, s_w, padding=VALID, group=1): From c_i = input.get_shape()-1 assert c_i%group=0 asse

7、rt c_o%group=0 convolve = lambda i, k: tf.nn.conv2d(i, k, 1, s_h, s_w, 1, padding=padding) if group=1: conv = convolve(input, kernel) else: input_groups = tf.split(3, group, input) kernel_groups = tf.split(3, group, kernel) output_groups = convolve(i, k) for i,k in zip(input_groups, kernel_groups) c

8、onv = tf.concat(3, output_groups) return tf.reshape(tf.nn.bias_add(conv, biases), conv.get_shape().as_list() x = tf.Variable(i) #conv1 #conv(11, 11, 96, 4, 4, padding=VALID, name=conv1) k_h = 11; k_w = 11; c_o = 96; s_h = 4; s_w = 4 conv1W = tf.Variable(net_dataconv10) conv1b = tf.Variable(net_data1

9、) conv1_in = conv(x, conv1W, conv1b, k_h, k_w, c_o, s_h, s_w, padding=SAME, group=1) conv1 = tf.nn.relu(conv1_in) #lrn1 #lrn(2, 2e-05, 0.75, name=norm1 radius = 2; alpha = 2e-05; beta = 0.75; bias = 1.0 lrn1 = tf.nn.local_response_normalization(conv1, depth_radius=radius, alpha=alpha, beta=beta, bia

10、s=bias) #maxpool1 #max_pool(3, 3, 2, 2, padding=pool1 k_h = 3; k_w = 3; s_h = 2; s_w = 2; padding = maxpool1 = tf.nn.max_pool(lrn1, ksize=1, k_h, k_w, 1, strides=1, s_h, s_w, 1, padding=padding) #conv2 #conv(5, 5, 256, 1, 1, group=2, name=conv2 k_h = 5; k_w = 5; c_o = 256; s_h = 1; s_w = 1; group =

11、2 conv2W = tf.Variable(net_dataconv2 conv2b = tf.Variable(net_data conv2_in = conv(maxpool1, conv2W, conv2b, k_h, k_w, c_o, s_h, s_w, padding=, group=group) conv2 = tf.nn.relu(conv2_in) #lrn2norm2 lrn2 = tf.nn.local_response_normalization(conv2, #maxpool2pool2 maxpool2 = tf.nn.max_pool(lrn2, ksize=1

12、, k_h, k_w, 1, strides=1, s_h, s_w, 1, padding=padding) #conv3 #conv(3, 3, 384, 1, 1, name=conv3 c_o = 384; group = 1 conv3W = tf.Variable(net_dataconv3 conv3b = tf.Variable(net_data conv3_in = conv(maxpool2, conv3W, conv3b, k_h, k_w, c_o, s_h, s_w, padding= conv3 = tf.nn.relu(conv3_in) #conv4 #conv

13、(3, 3, 384, 1, 1, group=2, name=conv4 conv4W = tf.Variable(net_dataconv4 conv4b = tf.Variable(net_data conv4_in = conv(conv3, conv4W, conv4b, k_h, k_w, c_o, s_h, s_w, padding= conv4 = tf.nn.relu(conv4_in) #conv5 #conv(3, 3, 256, 1, 1, group=2, name=conv5 conv5W = tf.Variable(net_dataconv5 conv5b = t

14、f.Variable(net_data conv5_in = conv(conv4, conv5W, conv5b, k_h, k_w, c_o, s_h, s_w, padding= conv5 = tf.nn.relu(conv5_in) #maxpool5pool5 maxpool5 = tf.nn.max_pool(conv5, ksize=1, k_h, k_w, 1, strides=1, s_h, s_w, 1, padding=padding) #fc6 #fc(4096, name=fc6 fc6W = tf.Variable(net_datafc6 fc6b = tf.Va

15、riable(net_data fc6 = tf.nn.relu_layer(tf.reshape(maxpool5, 1, int(prod(maxpool5.get_shape()1:), fc6W, fc6b) #fc7fc7 fc7W = tf.Variable(net_datafc7 fc7b = tf.Variable(net_data fc7 = tf.nn.relu_layer(fc6, fc7W, fc7b) #fc8 #fc(1000, relu=False, name=fc8 fc8W = tf.Variable(net_datafc8 fc8b = tf.Variabl

16、e(net_data fc8 = tf.nn.xw_plus_b(fc7, fc8W, fc8b) #prob #softmax(name=prob) prob = tf.nn.softmax(fc8) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) output = sess.run(prob) # #Output: inds = argsort(output)0,: for i in range(5): print class_namesinds-1-i, output0, inds-1-i这个

17、是基于原生tensorflow的一版代码,好长而且看着比较麻烦一点,还load了caffe里面生成的网络模型,比较麻烦,这里找了一版稍微简单的: # 输入数据 import input_data mnist = input_data.read_data_sets(/tmp/data/, one_hot=True) import tensorflow as tf # 定义网络超参数 learning_rate = 0.001 training_iters = 200000 batch_size = 64 display_step = 20 # 定义网络参数 n_input = 784 # 输入的

18、维度 n_classes = 10 # 标签的维度 dropout = 0.8 # Dropout 的概率 # 占位符输入 x = tf.placeholder(tf.types.float32, None, n_input) y = tf.placeholder(tf.types.float32, None, n_classes) keep_prob = tf.placeholder(tf.types.float32) # 卷积操作 def conv2d(name, l_input, w, b): return tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(l

19、_input, w, strides=1, 1, 1, 1, padding=SAME),b), name=name) #较大下采样操作 def max_pool(name, l_input, k): return tf.nn.max_pool(l_input, ksize=1, k, k, 1, strides=1, k, k, 1, padding=, name=name) # 归一化操作 def norm(name, l_input, lsize=4): return tf.nn.lrn(l_input, lsize, bias=1.0, alpha=0.001 / 9.0, beta=

20、0.75, name=name) # 定义整个网络 def alex_net(_X, _weights, _biases, _dropout): # 向量转为矩阵 _X = tf.reshape(_X, shape=-1, 28, 28, 1) # 卷积层 conv1 = conv2d(, _X, _weightswc1, _biasesbc1) # 下采样层 pool1 = max_pool(, conv1, k=2) # 归一化层 norm1 = norm(, pool1, lsize=4) # Dropout norm1 = tf.nn.dropout(norm1, _dropout) # 卷积 conv2 = conv2d(, norm1, _weightswc2bc2 # 下采样 pool2 = max_pool(, conv2, k=2) # 归一化 norm2 = norm(, pool2, lsize=4) norm2 = tf.nn.dropout(norm2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1