43. 含并行连结的网络 GoogLeNet / Inception V3 代码及QA


Q&A

1. 2的指数次在计算机中好计算;

2. 正常做深度学习先不要改经典的网络,除非你的数据特别和别人的不一样,或者你是此方面的特别的专家;你可以调整一些通道数,比如在VGG课程代码时讲过所有通道数除以4,方便计算(自己的计算机太慢了);或者把输入输出拉宽/窄一点,其他的结构方面最好不要随便调整;

3. 

13. 既然模型的调参是靠不同的方法对比得到的,那么在计算资源有限的情况下,有什么方法降低成本?比如说把Fashion MNIST尺寸减小?答:HPO(超参数优化),有很多方法;但是你不能在Fashion MNIST上调整,通常你在ImageNet的一个小子集上调节,比如说CIFAR 10之类的,或者说对ImageNet把你的输入输出搞小一点,然后把你的样本减少一点,然后你有不同的10个网络,在上面训练一次,能排个序;虽然图片集变小了,但是不同算法排序相对来说相对可能还是比较稳定的。所以你在小数据集上测试一下,然后再挑个好的;比如你有1000个不同的想法,在小数据集上选择10个,再在完整数据集上训练10个;淡然这里面有一大套这样的工具;现在有好多很好的方法来帮你搜索参数。有这方面的工具。如optuna等。

ResNeSt: Split-Attention Networks这篇文章用的是attention的架构吗?和之前的有什么不一样?答:这篇文章的效果好,不仅仅是用了attention,当然写文章需要这样说;实际上它效果好是因为我们做了大量的trick;因为开发gluon cv做类似的东西时,我们积累了大量的trick在里面,所有的trick加在一起,再加上那个东西;不过这里面最主要的东西确实是attention这个东西,但之所以这个比别人好很多,是因为不仅仅是一个attention在作用 ,而是和很多别的东西共同起作用。模型设计是一块,训练数据怎么弄,如何优化,学习率怎么调,都是很重要的东西,很多时候,模型不一定是最重要的东西;e.g. 如果某论文report的精度是某个值,然后你再加了一些trick进去之后,你的data怎么弄、你的学习率怎么设置、你的优化怎么弄,此处你并没有改变模型,你改的只是训练的东西,你就可以把精度有可能再提升3%左右, YOLO v3就是这样的;所以这些训练的数据的trick,对整个模型非常重要,所以当你知道大量的trick的话,你不改变模型,你也可以把它做的很牛;这些也是deep learning dirty的地方在里面。而且Googlenet v3之所以会好,也不仅仅是因为inception v3这个架构而已,是因为它里面加入大量的softmax,叫做soft labeling,就是把你的0,1变成0.1,0.9,这样的;这个东西给它带来了很大的性能提升,但是它们把它归功于inception v3的改进,但其实不一定是的;所以大家读paper时,里面有很多很细节的东西在里面,你要注意。

相关