Lecture 6:Hardware and Software
Deep Learning Hardware
CPU:central processing unit CPU核心少,每一个核心更快,且更能干,更擅长顺序计算 GPU:graphic processing unit GPU有更多的核心,每个核心更慢,且笨,更擅长并行任务 TPU:为深度学习专有的硬件 programming on GPUS CUDA: (1)可直接在GPU运行类似C的代码, (2)优化的API有:cuBLAS,cuFFT,cuDNN,etc (3)仅限于英伟达 OpenCL: (1)类似于CUDA,但可以运行在任何事情上 (2)英伟达硬件上通常更慢 HIP: (1)可以将运行在CUDA的代码转化为运行在AMD,GPU的代码
Deep Learning Software
现有大量的深度学习框架
torch和tensorflow的优势在于: (1)自动计算梯度 如图所示
(2)可运行在GPU上,加快特定问题的运行速度
PyTorch
基础概念: (1)torch.Tensor:类似于numy的array,但是可以运行在GPU上 (2)torch.autograd:自动对Tensor计算梯度 (3)torch.nn.Module:一个神经网络层,可自动存储权重 tips:@staticmethod允许类可以不实例化的调用某一特定方法 torch.nn可以更加简化的实现代码 tips:
class Base():
def __init__(self,val):
print('winn',val)
class A(Base):
def __init__(self,haha):
super(A,self).__init__(haha)
s= A(1)
winn 1
使用torch.nn.Module可以更加方便的定义一个新的模型 例子如下:
tips:在这里对torch.nn.Linear产生了一定的疑惑,感觉类实例化以后应该不能再输入参数了,但是这里却又输入参数。 查看了torch.nn中的代码,原来是有Input的用法。
def forward(self, input: Tensor) -> Tensor:
return F.linear(input, self.weight, self.bias)
可以使用torchvision中已经训练好的模型 如alexnet,vgg16,resnet101等 torch.utils.tensorboard是基于网络的视觉工具 可以更加方便的呈现视觉效果 常规的Dynamic Computation Graphs如下所示:
可以看出每一次运行时,都要重新建立模型,很浪费时间 所以提出了Static Computation Graphs
Tensorflow
tesorflow2.0以前默认静态计算图,可选择动态图 2.0以后默认动态图,可选择静态图
|