简体中文 | English
在简单了解了PaddleVideo的配置系统如何工作后,我们来看下PaddleVideo是怎么构建起来一个视频分类或动作定位模型的。
- 基础知识 从一个NN layer开始
神经网络的搭建一般由多个layer组成,PaddlePaddle2.0动态图以nn.layer为构建单元,开始构建一个网络结构。 nn.Layer 的源代码请参考nn.Layer源码 相关文档参考nn.Layer文档
PaddleVideo主要用到的nn.Layer属性和方法有
- train() 用于设定层为训练模式
- eval() 用于设定层为预测模式
- forward() 定义每次调用执行时的计算
- state_dict() 获取层的参数
- set_state_dict() 设置层的参数
其中forward 重写了类的call方法,调用forward会执行图的计算。
- 继承自nn.Layer的模块基类
PaddleVideo的网络结构以 nn.Layer 为构建单元,大多数网络结构模块以nn.Layer为基类进行扩展
如以下代码head base
class BaseHead(nn.Layer):
def __init__():
XXX
def init_weights()
def forward()
...
再比如:
- 构建不同类型的framework
PaddleVideo 设计了不同种类的framework, 当然,他们也是继承自nn.Layer的,所有模型都对应着一种framework 包括
-
构建framework的组件,Head,Backbone等
-
构建数据读取器,优化器等
-
通过配置组合各个组件
-
正向网络
-
反向网络
-
指标
-
分析实验结果