Skip to content

Latest commit

 

History

History
63 lines (36 loc) · 1.81 KB

modular_design.md

File metadata and controls

63 lines (36 loc) · 1.81 KB

简体中文 | English

模型库设计

在简单了解了PaddleVideo的配置系统如何工作后,我们来看下PaddleVideo是怎么构建起来一个视频分类或动作定位模型的。

  1. 基础知识 从一个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会执行图的计算。

  1. 继承自nn.Layer的模块基类

PaddleVideo的网络结构以 nn.Layer 为构建单元,大多数网络结构模块以nn.Layer为基类进行扩展

如以下代码head base

class BaseHead(nn.Layer):
    def __init__():
        XXX
    def init_weights()
    
    def forward()
    
    ...

再比如:

  1. 构建不同类型的framework

PaddleVideo 设计了不同种类的framework, 当然,他们也是继承自nn.Layer的,所有模型都对应着一种framework 包括

  1. 构建framework的组件,Head,Backbone等

  2. 构建数据读取器,优化器等

  3. 通过配置组合各个组件

  4. 正向网络

  5. 反向网络

  6. 指标

  7. 分析实验结果