第八讲--深度学习软件--课时19

GPU最初就是为了游戏而开发的

深度学习GPU目前指的就是英伟达的GPU

--------------------------------------

CPU一般是八核,十六核...可以同时做许多不同的事。可以多线程

GPU一般是几千核,GPU的核很弱,很慢,需要几个协作才能处理任务

CPU只有很小的cache,没有内存

GPU本身有8/12/16GB的内存

第八讲--深度学习软件--课时19

------------------------------------------------------------------------------------------------------------------------------

GPU适合并行运算

矩阵相乘,卷积使用GPU非常高效    (小的运算可能cpu更快,但是大运算gpu很有优势)

--------------------------------------------------------------------------------------------------------------------------------

CUDA是英伟达开发的类c语言,可以充分利用GPU特性

openCL 可以用于英伟达,AMD,CPU          但是较慢

-----------------------------------------------------------------

GPU一般比cpu快60-70倍

----------------------------------------------------------

使用英伟达的cuda库......,比你自己写的快两三倍。

-------------------------------------------------------------

模型存储在cpu或GPU上,但数据在计算机里,读取数据会相对变得很慢。推荐使用固态硬盘或者将数据读进RAM里

-----------------------------------------------------------------

numpy不能运行在gpu上!!!而且得手动计算梯度

--------------------------------------------------------------------------

tensorflow先声明计算图,再开始多次迭代

--------------------------------------------------------------------------

由于numpy只能在cpu上,而网络有时候在gpu上,传递起来非常慢,因此w需要声明为tf.Variable() 而不是tf.placeholder()

tf.placeholder是需要赋值为numpy变量的

---------------------------------------------------------------------------

只是sess.run(loss) 参数是不会更新的

需要

optimizer = tf.train.GradientDescentOptimizer(1e-3)

updates = optimizer.minimize(loss)

sess.run([loss,updates],feed_dict=values)

而updates事实上是通过tf.group(w1,w2...)来实现的,它不返回值,只是表明依赖关系,如下图

第八讲--深度学习软件--课时19

------------------------------------------------------------------------

tensorflow支持分布式计算,可以切换cpu/gpu

-----------------------------------------------------------------------------------

pytorch是动态计算图,tensorflow是静态计算图

-------------------------------------------------------------------------------

具体细节,代码太多,不贴了。