计算机视觉(斯坦福2017课程)
1. 主流深度学习框架
Caffe,Torch,Theano,Tensorflow,Keras,PyTorch等。
- 优势:
(1)框架能够让你轻松的构建和使用一个庞大的计算图
(2)能够轻松的在计算图中计算梯度
(3)能够高效的运行在GPU上
Caffe / Caffe2
可以做到不用写代码,只通过改配置就能够训练你的神经网络:
(1)convert data(将数据格式转换成HDF5格式或者LMDB格式,或者图像能够直接转换成caffe的脚本)
(2)define net(定义网络结构,只需要做的是修改一个prototxt的文件,来定义计算图结构)
(3)define solver(设置一些优化器程序,也是在prototxt的文件里)
(4)train(只需要做的是修改一个prototxt的文件)
Theano / TensorFlow
(1)写一些代码来定义计算图
(2)然后可以运行图模型,重复利用它
训练这个网络:
如上过程需要将权重不断的在CPU和GPU之间复制,因此一般不使用这种方式,而是将w也放在GPU处理。
代码如下:
更简化的代码:
初始化值更完善合理的条件下:
- Keras是一个很方便的API,它建立在Tensorflow的基础之上。
Torch / PyTorch
-
内部明确定义了三层抽象:
(1)Tensor张量对象:最基本的数组,但可以在CPU上运行。numpy+GPU
(2)变量对象(Variable):就是计算图中的节点,这些节点构成了我们的计算图;储存数据和梯度;
(3)模对象(Module):它是一个神经网络层,可以通过将它们组合来构成一个大的网络;可能储存状态和学习的权重。 -
和Tensorflow等价对比:
-
两层神经网络的例子:
定义自己的类并且使用optimizer之后:
总结
2. 不同的CNN架构
AlexNet,VGG, GoogleNet,ResNet等;
-
AlexNet:
-
VGG16
-
GoogleNet
有了局部拓扑的想法,然后堆放大量的局部拓扑结构,构成一个网络。
-
ResNet:
原来的网络是学习输入到输出的映射H(x),而残差网络学习的是F(x)=H(x)−x。