文章目录
cpu vs gpu
gpu是图形处理卡或图形处理单元。(为什么感觉这个1070有点便宜。。。)
GPU核数更多,但有一个缺点,它每个核运行的非常慢,而且执行的操作不如cpu多,gpu的核无法单独工作,它需要共同协作。多个核执行一个任务,而不是单个核单独运作。
cpu和gpu另一点不同是缓存,cpu有高速缓存,虽然比较小,cpu主要依靠与ram。gpu内置了ram。当计算机ram与显卡通信会造成严重的性能瓶颈。
gpu更擅长处理高速并行的算法。gpu最擅长处理矩阵算法。
gpu可已将矩阵中每个元素分开计算,进行并行计算,要是换作cpu则会进行串行计算。针对平行的任务gpu表现更好。
显卡比cpu快大概60倍时间,经过cudnn优化后会比没有优化前提升3倍左右的时间
在深度学习过程中,你的model存储在显卡中,你的数据存储在硬盘里,如果不注意从硬盘读取数据过程会变成训练的瓶颈。因为gpu速度非常快,正向,反向传播速度非常快。从旋转的机械硬盘读取非常慢。
解决方法:1将数据读了内存
2将机械转换为固态的
3通过cpu多线程,将数据读入内存
软件
tensoflow不需要计算可以直接给出梯度。
可以随意切换cpu和gpu
pytorch与tensotflow相似
tensorflow和pytorch的优势是可以自动计算梯度,同时可以自动切换cpu和gpu
tesorflow例子
pytorch
pytorch中张量就像Numpy中array
第一步建立随机数
前向传播
反向传播
最后用学习率计算出梯度
最开始用这行代码显示用gpuy运算。
当建立这些变量,每一次对pytorch变量的调用,都封装了一个pytorch张量,并设置了二值的标记。告诉我们是否要计算改变量上的梯度。
前向传播
pytorch提供预先训练好的模型