最近由于要解决一个问题,需要用到之前使用不多的python和完全不熟悉的Tensorflow,因此踩坑比较多,解决问题的进展比较缓慢。“解决问题的进展比较缓慢”本身就是一个问题,我不希望这个问题一直是个问题,所以我希望通过复盘和思考来解决这个问题。
首先,我想总结一下我研究过程中的痛点:
1. 对python的语法不熟,需要做什么的时候需要现查
2. 对numpy、pandas等一些比较成熟的工具不熟
3. 对tensorflow不熟,api不知道应该如何使用,遇到坑之后容易踩下去,并且比较费劲才爬得出来。
4. 目前要研究的是一个比较大的题目,需要解决的问题是一系列的,有时候面对众多的问题,不知道在哪里下手。
首先,我想给自己打气,这些不熟都是正常现象,研究过程中肯定充满了“不熟&踩坑”,实际上整个研究过程就是一个不断解决问题的过程,当坑踩得差不多了,东西都熟悉得差不多了,问题都解决得差不多了,研究目的也就基本达到了。
仔细分析一下罗列的三个痛点,实际上可以分为三类:
1. 对发布已久,已成气候的工具不熟
2. 对比较新的工具不熟
3. 没有形成解决问题的方法论
第一类问题实际上造成的麻烦不大,遇到了问题后一般如果能够准确找到log,然后google一下,一般马上能够找到解决方案。只不过这种使用工具的方式会让我对工具的掌握不够系统,看到别人用过后自己才会用。针对于目前赶时间的情况,也只能这样进行,之后如果又需要,可以对这些工具进行系统的学习。
第二类问题比较麻烦,首先tensorflow目前并没有很成熟,它仍然处于快速发展的阶段,网上虽然有很多教程,但和我目前使用的版本不同,api差别较大(就连官方的demo都有这样的情况)。所以会造成:
1. 使用api的方式不科学
2. 使用教程里的方式会报各种各样的错误
对于第一个问题,可以:
1. 搜索教程的时候使用时间过滤的方式,尽量选择比较新的教程。
2. 官方的文档还是要抽出时间快速的过一遍,起码心里有数,遇到了什么问题可以去哪里查
3. 如果要使用某方面的api,可以看看某方面官方的demo
对于第二个问题,我觉得相对于第一个问题是比较好解决的,报错的log就在那里,google一下,一般只要耐心一点,是可以比较快速的找出解决方案的。
最后也是最大的问题:没有形成研究问题的方法论
面对比较复杂的问题的时候,有时候就一团乱麻了,不知道从何处入手。遇到这样的情况,容易灰心,很容易就停下来,后来慢慢发现,这个时候继续收集信息才是正解。继续收集信息,继续对当前问题有更深入的了解,继续多提一些问题,往往更加有利于将问题细化,而将复杂问题细化,就是解决复杂问题的开始。将复杂问题细化后,很有可能得到的解决这个复杂问题的蓝本,有了这个蓝本继续将问题不断的细化。
问题细化之后,在解决具体问题的过程中往往会发现需要对蓝本进行调整。不断的反馈和调整,问题往往就容易解决。所以解决具体问题时试错的效率对解决整个问题的效率的影响非常大,这也就是为什么我对自己提出“如果有什么想法,就快速执行,快速反馈”的原因。