任务:
1.使用tensorflow做一个CNN的demo。
2.讲解CNN的原理和过程
3.讲解论文,分解论文架构
4.阅读两篇中文论文,学习中文写作
展示提纲:
CNN:
1.介绍CNN的原理和正向传播过程,介绍LENET-5
2.展示使用tensorflow编写的CNN代码
3.介绍CNN的反向传播过程
4.展示依据公式推导用numpy编写的CNN
5.介绍自动微分(Automatic Differentiation)技术
梯度检验
6.介绍一些前沿的网络-resnet,Googlenet
7.提出自己关于深度网络的idea-一个复杂的全连接网络
8.目前能力的不足,进一步学习的目标
9.一些疑问
papers:
idea:
1.在讲解CNN原理时,引入大规模的CNN例如RESNET,并提出对其进行模型压缩的想法
2.讲解CNN时可以使用一些比较有知名度的网络,比如VGG-NET RES-NET
3.做CNN的demo可以考虑:nmist手写识别,人脸识别,竞赛成绩
4.神经网络的结构可不可以智能化的生成
5.预防过拟合的方法-Dropout regularization和模型压缩有相似之处
6.CNN的进阶应用:
a.不使用tensorflow框架了,独立使用python做一个CNN对mnist进行分类
b.使用高级的框架实现对简单数据集的分类(google-net inception-net res-net)
c.使用复杂的数据集,进行更高级的识别活动,例如人脸识别
d.使用gpu进行训练,对比训练结果
7.阅读经典架构的论文
8.resnet可不可以叠加res模块,构成resresresnet,或者可不可以在保证现有准确度的情况下,压缩resnet的模型比如 如果发现某些有备用路径的路径的权重太小以后就把他删掉,或者我的resresresnet也可以这样考虑
9.现在的神经网络大多都是纵向的,我可不可以真正的设计一款全连接的网络,利用图论,网络流和模型压缩对她进行剪枝,从而构建一个类型人脑的相当优秀的神经网络
10.resnet成功的因素之一就是可以跳过一些无用的层,保证了训练效率。这些无用的层是不是就可以用来剪枝
11.inception-net的结构也像一个网一样思想:将不同的卷积方式水平放在一起,让网络自由的选择训练方式
启发:inception-net完全可以和resnet结合在一起啊,inception-resnet
- 重中之重-CNN的误差反传和公式推导----最好有代码实现
目标:
1.掌握基础的TENSORFLOW的应用
2.搞清楚神经网络深度学习的一些东西
3.熟悉linux环境下深度学习的开发
4.能有一些自己的想法
安排:
周三:搞清楚CNN的原理。
周四:阅读tensorflow代码。
周五:学习tensorflow
周六:跑出自己的demo
周日:优化demo,做ppt
周一:阅读论文,做ppt
tips:
1.CNN其实是一个简化的DNN,每个filter相当于被剪枝后且共享权重的一堆神经元卷积的特点就是parameter sharing and sparse connection。CNN其实是一种很聪明的模型压缩,他通过卷积运算巧妙的剪枝和减少参数。
2.卷积(convolution)其实并不准确,这个应该是叫互相关(cross-corelation)
3.pooling layer其实也是一种模型压缩的手段,为了提高运行效率,提高提取特征的鲁棒性
4.写tansorflow代码时最重要的厘清tensor的维度传递和net的结构,大脑一定要清晰
5.
问题:
1.CNN是如何对weights进行更新的?
2.卷积核不是有人设计好的吗,设计好的话怎么编写代码?全随机是不是8行?
3.CNN网络train的具体过程?
4.tensorflow主要是工业界还是学术界在使用?
下一阶段目标:
1.可以使用GPU进行更加复杂的训练,掌握tensoeflow的gpu编程方式
2.更加熟练的使用python和tensorflow