Skip to content
Charlotte edited this page Jan 29, 2018 · 22 revisions

Welcome to the PaddlePaddle_code wiki!

  • 记录在学习paddle和深度学习中踩到的坑

2017.10.26


  • 第一篇博文:PaddlePaddle手写数字识别

2017.11.1


  • 第二篇博文:CNN原理详解
  • pooling部分没有写avg pooling,埋坑

2017.11.8


  • 第三篇博文:paddle数据预处理,创建自己的数据集。
  • 一个问题:很多框架都喜欢在这种上手的例子把数据内置,这样的好处是方便用户,更易上手,同样也有缺点,让用户用自己的数据集的时候不知道该如何下手,是否可以先教用户如何处理自己的数据,再告诉用户,如果想跳过这一步骤,可以先用内置的方法。
  • reader函数感受:比tf的数据预处理流程方便,直接在一个函数命令里就可以搞定。

2017.11.22


  • 本来应该是11.15日更新的,因为计划整个系列的内容耽误了,下不为例。
  • 第四篇博文:CNN详细讲解,包括CNN的反向传播,自己实现了CNN。不过这里是借鉴了别人写的,我自己写了一个,但是测试的结果总是感觉不太对,所以就借鉴了以为代码风格很好的同学的写法。关于CNN的反向传播我觉得还是有必要掌握的,至少知道整个过程,参数是如何计算并传递的,心里踏实一点。
  • 意外发现:第一篇博文里的simple_img_conv_pool把conv和pool两层结合在一起,非常方便啊,tf里面有吗?我只记得有tf.nn.conv2d和tf.nn.max_pool,有两者结合的吗?

2017.11.29


  • 第五篇博文:用paddle和tf进行图像分类
  • 真的很想吐槽,可能是自己用tf用的还不够溜,但是真的觉得用起来很麻烦,之前用过mxnet写模型,也比tf顺手,paddle写模型也很快,简洁明了。不行,我得再花时间搞搞tf,多练练手。
  • 关于实验结果:用之前做手写数字识别的网络结构(也就是官网的结构)去分类cifar10数据,效果并不好,后来用LeNet-5网络结构效果也不好,一是迭代次数确实设置的很少,只有200次,tf的models里的都迭代了10w次呢!我再试试加大迭代次数看看效果。当然网络结构也是需要改进的,用vgg和resnet都能上80%,dropout和bn都可以加起来。

2017.12.04


  • 周末两天未更新,去滑雪了,会滑初-中级道了哈哈
  • 今天看了两年前自己写的auto-encoder代码,没有main函数,没有代码风格,没有外部参数,需要改一下。
  • 训练alexnet的paddle模型和Tensorflow模型,比对一下效果。
  • 修改了一下autoencoder的代码,支持batch训练方式

2017.12.05


  • 开心!上午写了支持batch读取文件的autoencoder,验证了一下效果没有问题。第一次迭代时,权重初始化,后面的batch基于前面的batch训练时,需要基于上一次训练的w和b,我的方法是训练完把w和b保存下来,cpickle.dump,下一次训练时再load pkl文件,这种方式和parameter server不是一样的吗!!把所有的参数都传到参数服务器上,其他的worker节点只需要训练数据即可。这样的话,我就可以写一个分布式的autoencoder了哈哈!等会去看看tf的分布式源码,借鉴一下~~~
  • ToDo(tomorrow): -- 支持多线程batch_reader -- 支持多GPUbatch_reader

2017.12.06


  • 发布第六篇博文:用paddle和tf实现alexnet跑cifar10
  • 感觉对alexnet的理解还不够深入,如果尝试改一下卷积核的尺寸和个数,会对模型产生怎样的影响?为什么会产生这样的影响?对计算心梗会有影响吗?晚上再改一下参数测测。

2017.12.07


  • 尝试用一下paddle的分布式训练,跑一下inceptionv4---并没有跑 = =,用tf跑的,单机多卡的方式,分布式的还需要再改改程序
  • 做完在公司干活到10:45左右的时候突然心脏狂跳,不停的深呼吸,手开始变麻,调节了好久才平静下来,好怕自己会猝死了 = =!立个flag,以后加班不超过10点,10必须回家。我还想多活几年T_T

2017.12.08


  • 一点感悟:做分布式的框架一定要先想好架构,想清楚各个模块怎么独立化,每个部分的具体工作。然后再跑一个小demo。不能一开始把所有模块写在一个程序里跑成功了就认为可以了。

2017.12.11


  • Q:一位同行提了个问题:在用tensorflow多线程读取数据时,如果不初始化,则会一直循环输出,线程不终止,why?
  • A:string_input_producer函数
里面有个num_epochs决定什么时候抛OutOfRange异常, 默认是cycle无限循环复制模式.
  • 我的理解是:我理解的是,在这里初始化的意义相当于一个计数器,如果不初始化就是默认的num_epochs,无限循环,初始化后启动多线程,num_epochs更新后超过一定值就会启动outofrange 就停止所有线程了

2017.12.12


  • 跑了下tf的vgg,paddle版的vgg11月27日就跑了,结果tf要略好。vgg还是要花时间再好好看看,有很多可以借鉴的思想。

2017.12.13


  • 发布第七篇博文:用paddle和tf实现vgg,写了第一篇公众号,收获了42个粉丝哈哈,太意外了。
  • 做tf的分布式框架好麻烦 - -,快吐血了。写了快一万多行了,愣是这有问题那有问题,跪了。。。。。
  • 能不能把所有flags参数写到config里调用??
  • 记录一个问题:tf分布式如何实现early-stpping?(SessionRunHook)回家仔细看看
  • 一个感悟:如果代码量太大,先剪枝,实现最基本的,其他的属于“同类型”的功能的函数再慢慢加上去,不然看着太多心里烦。

2017.12.19


  • 好几天没更新了,最近太忙,负载过多,昨天调节好了,今天开始搞

2018.1.9


  • 都2018了,前段时间一直在敢项目进度。最近参加了paddle组织的比赛,目前排名第二,争取超过第一名哈哈

2018.1.29


  • 一晃20多天没更新wiki了,最近一个月一直在忙房子的事情,好在都搞定了。昨天晚上写paddle邮件分类的东西都是赶工赶出来的,今天被指出好多纰漏 = =,以后一定把代码和文章打包好了再发。上半年的时间基本上快被预定满了,最多只能再接一个活了,再多绝对绝对受不了了,现在负担就很重了。怕到时候身体扛不住。既然头一个三年计划已经提前完成,周末制定一下下一个三年计划,其实也能预估下一个三年的生活状态,基本上就是忙忙忙,宅宅宅,在家不断敲代码看源码写文章。小哥哥年后也会买房,争取未来三年把一套房的贷款还完,在武汉再买两套房。再关注一下移民的事情。恩,周末好好琢磨琢磨~