深度学习小笔记00-深度学习看的书推荐和其他小问题还有一些博客链接

写在前面的话:一些零零碎碎的小事情。
做CV,逃不掉要接触机器学习,我现在才入手其实很晚了,但是相信我能很快进入这个领域的,之前一直沉迷opencv,出到opencv4.0,已经正式融合TF了。这是一个非常有趣的事。

新手从0开始踩过的坑

01推荐书:

深度学习与计算机视觉
这本书前面写的很好,但是后面例子都是基于MXNet和Caffe的,且不说Caffe2已经融合进了Pytorch(记得是),那个配环境各种依赖库真实劝退。所以我只看了前面一半。
Tensorflow实战Google深度学习框架第二版这本书已经出来第二版,还有几本和它长的像的叫《深度学习原理Tensorflow实践》,这本书写的不如上面列的这个,感觉后者像是蹭热度。郑泽宇这本内容不错。
魏秀参的书
这本魏秀参的书讲了很多精华内容,但是不适合从0开始,需要有些数学功底和对深度学习或神经网络有些了解。而且不是一本基于某框架的书,只有理论。

02配环境

ubuntu16.04,cuda,cudnn,py
一定要注意TF和他们之间的版本对应关系!还有显卡支持计算能力到几,这个在核弹厂官网能查到。我笔记本870显卡开普勒架构3.0的计算能在这里插入图片描力不能用TF1.12.0难受的亚皮。只能用1.10.0试试。
配置环境推荐anaconda虚拟环境,不要在实体Terminal里面装,因为后面会不断出事,虚拟环境克隆调整比较方便。

配环境踩的坑:

Internal: cudaGetDevice() failed. Status: CUDA driver version is insufficien
很奇怪我用的CUDA和CUDNN如下:
查看CUDA和CUDNN版本讲道理是支持TF1.10.0的,结果在虚拟环境下面装了还是不行。找不到CUDA设备。所以在环境配置的GUI界面选了别的CUDATOOLKIT版本试试依旧不行。解决办法:删除全部TF的包。我用的:pip uninstall tensor*不能用替代字符,我是一个个删的。然后:pip install tensorflow-gpu==1.10.0,这样装完就能用了。
为什么这个:
anaconda_ENV这个不好用还不知道是什么原因。但是pip是一直好用的。

Spyder不能输入中文,envs文件夹没有虚拟环境文件夹

首先确定自己装了中文输入法,我用的搜狗,fcitx的方式。
然后参照下面这篇文章
不能输入中文
我做完后,base可用,自定义虚拟环境仍旧不可用。但是,删除虚拟环境时候显示:
路径
看到,虚拟环境的路径是在用户文件夹的.conda的隐藏文件夹的,所以要把上面那篇文章提到的.so文件复制到对应的文件夹中。不熟悉纯命令行的同学可以先用cd进入上面的隐藏文件夹然后用 ”nautilus .“ 命令打开图像界面。或者在资源管理器按住ctrl+h也可以显示出隐藏文件。
然后:

找到文件/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
在anaconda3下搜索platforminputcontexts目录,结果会出现好几个platforminputcontexts
正确的应该是anaconda3/lib/python3.6/site-packages/PyQt5/Qt/plugins/platforminputcontexts 这个目录,向里面复制上面的文件,重启spyder即可。

在资源有限情况下训练神经网络(Anaconda IDE)

(其实这是很有限的方法,并不如直接加硬件来的实际)
最近测试PSMNet网络,在SceneFlow数据集上,作者使用4路Titan Xp12G 显存,12的BatchSize,单卡一次3组数据。我只有1080Ti11GB,单卡3组Out of Mem。使用nvidia-smi查看后,发现batchsize是2时候能用,占用显存约7G,讲道理单卡是具备batchsize3的能力的,图形界面消耗约400-500M显存,所以决定纯命令行,

开启黑窗口:
ctrl alt F1
执行:
sudo service lightdm stop
停止图形界面;
执行
nvidia-smi
看到显存占用0MB
执行:
conda info --env
查看当前有哪些虚拟环境;
执行:
conda activate ***
激活对应环境,bash前面会有标注

资源使用率查看

 开启
 ctrl alt F2
 watch -n1 nvidia-smi
 每隔1秒刷新一次信息,显示功耗、计算使用率和显存占用,
 下面几行会详细列出每个command的占用率
 开别的窗口,top命令查看,相当于Win的任务管理器,
 值得注意的是,内存占用率低,但是buff/cache占用率特别高。
 buff是准备写入磁盘的数据,cache是即将从磁盘读取的数据,我这里占用达到25GB,
 毕竟要喂饱显卡,磁盘的速度还是不够啊。这也给选配深度学习主机提了醒:
 内存至少比显存大,大一些的内存可以提供更大的cache(至少对于PyTorch)

注意事项:显示器熄屏,xset: unable to open display

关闭图形界面后,机器运行期间我关闭了显示器。
第二天,当我打开显示器,没有信号输入,观察机器运行状态仍然是满功率运行。使用putty远程登录,机器一切照常,就是没有显示器输出,插显卡DP口插主板HDMI口都没用。
putty正常
依旧保持着6小时一个epoch
解决办法:就算显示器没输出,又不是不能用,ssh登录也可还行,启动图形界面:sudo service lighdm start ,我可没这个勇气,显存会爆。等跑完15个epoch(官方给的例子是10个epoch,我想多试试看看区别),我就putty启动图形界面试试(肯定要启动新一轮train,保证自己显存紧张情况下启动图形界面)。等更。
更新:训练过程中显存几乎占满情况下,启动图形界面居然没有问题,就是有点卡,而且上面的那个显示器无信号问题也没了。(开图形界面情况下开启训练却可能爆显存)

写得好的文章:ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构;

ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构
英文帖原文1  英文帖原文2

特征图尺寸计算方式

附一下截图的链接特征图尺寸计算

Looney等人建议,数据集中65%的用于训练,25%的用于测试,10%用于验证

名词解释

  • LRN:LRN(Local Response Normalization)
    作用:将不同卷积核RELU后的feature归一化,平滑处理,能增加泛化能力。
    原因:生物方面,玄学
    Alexnet提出
    公式:

lrn
CSDN链接原文
后来实验发现,LRN层似乎没什么用-_-

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章