深度学习第一篇论文——半监督学习Mean Teacher 的学习

   最近一个月刚接触深度学习,导师给了一篇论文(mean teacher)让我先理解然后跑论文里面的代码,这个过程中我出现了很多问题,借这篇blog记录下来,也是鼓励自己接着学下去。

  • Mean Teacher 的论文地址:https://arxiv.org/abs/1703.01780;
  • Mean Teacher 的 GitHub 地址:https://github.com/CuriousAI/mean-teacher/

  首先,拿到论文后,因为太久没有使用英语,简单的句子还能理解,出现很复杂的句子就束手无策,所以只能一句一句的翻译,深度学习里面有很多的名词需要去了解比如说softmax、卷积神经网络、半监督模型包括论文里面的 mean teacher ,有道把它翻译成“吝啬的卑鄙的老师”,当然在这里的mean其实是平均的意思,因此,只是翻译强行理解不可取,所以必须要先学习理解深度学习里面的概念。

  我看的是莫烦的教程,莫烦网页https://morvanzhou.github.io/

  在B站和优酷上都有,感觉莫烦的教程对我这种刚接触深度学习的菜鸟来说还是很有用的,一些概念如过拟合、欠拟合、正则化都是能简要介绍。看完了他对基本概念的介绍,手动的把论文的翻译修改一遍,这样边写边理解论文(网上也有一些推荐论文应该怎么读的blog也很有用)。虽然还不能全部理解透彻,但是已经能在自己的脑子里有一个大概的印象,论文提出了一个什么方法,解决什么问题,方法的优势在哪里,论文下面的参考文献有的也要看一看,本文对比 the Π model,Temporal Ensembling 和mean teacher,所以可以了解一下另外的模型,它们的异同点优劣点。

  如果论文看得差不多,我们就可以在GitHub上下载源码了,下载下来的压缩包会一般都有pytorch和tensorflow两个版本的,用哪一个全看个人喜好。我花了两天装好了Ubuntu和配置pytorch环境(用惯了window感觉Ubuntu很难上手,不过用了一段时间还是觉得Linux比较简洁),最后还是用的tensorflow,个人感觉目前tensorflow的使用还是主流。配置tensorflow环境时候要注意下载gpu版本还是cpu版本,gpu快很多,因为实验的training_step有150000,我就去问老师要了一个gpu的服务器,服务器上的环境要自己配置,因为不会有sudo权限,就要配置属于自己的python环境,我用的是Miniconda。

  下载的文件中,Readme很重要,它会包含论文的思想,以及代码实现的步骤,一开始没注意就浪费了很多时间。还有这篇论文里tensorflow实现时,要求tensorflow的版本要小于1.3,不然运行的时候就会挂掉,这个在GitHub上面有讨论,为了方便,我就直接下载了一个tensorflow-gpu 1.2.1版本的。

  然后就在服务器上面跑,150000步用cpu跑了四天跑了7000+,用GPU一天就能跑完,不过我的程序对显存要求比较大,经常跑了几万步就挂掉了,因为代码里面设置了用saver保存了checkpoint,所以可以通过tf.restore从断点开始运行,我花了一个星期,研究了很多范例,最后还是会报错,错误如下:InvalidArgumentError (see above for traceback): Shape [-1,32,32,3] has negative dimensions   在stack overflow里面说这是因为没有给placeholder/images赋值导致的,但是我在所有的collection里面都没有找到保存这个变量名的tensor,就算自己重新定义赋值,依旧报错,如果有大神路过,知道这个解决方法的希望提醒我一下,感激不尽!自己打算在多看一看tensorflow的知识再写出来。

  所幸之后重新执行后程序进行的还比较顺利,没有什么大的问题。可以给老师交差,还要继续学习。其实在配置环境时候会出现很多问题,也许在别人电脑上一句话解决,在你的电脑上就会花上一天不止的时间,最重要的是心态放平和,我从一开始的淡定到焦急,到崩溃,到绝望,到现在的习惯绝望,我的耐心好了不少,能不能搞出来是玄学问题,做研究就是这样,不知道能不能出来,投入了很多时间精力也许会是一场空,但是我们一直都在路上,路漫漫其修远兮,吾将上下而求索。

   

你可能感兴趣的:(学习历程)