DyNet 代码笔记
API角度 Python 功能没有 pytorch 完善. 参数收集等都需要手写. CPP API 同 Python. 设计理念 类名为 Expression: 表达式 -> 明确定义 未执行. Graph @xl nodes, parameter_nodes inplace: forward_inplace_state { NOPE } 完全没支持inplace. immediate_compute 立即执行. 提供backward方法, 但传入了loss的index. Tensor 暴力绑定内存. (直接就是一个裸指针) Expression (Variable) value() 方法真正执行expression并获取值. 调用ee(ExecutionEngine). Autobatching 在执行cg的时候做. 具体代码在 exec.cc 里一个叫 incremental_forward_no_update的函数里. 使用 signiture 机制. 不同功能的function对应不同的signiture. 相同signiture的 合并. Optimize 没有做. 只有一个找关键路径的简单算法. Node(Functions) Spec推断 DimForward 专门维护 shape 信息. forward 和 backward 放在一个子类里. 所有控制都由 Graph 接管. 包括所有 Variable 和 Nodes (Function)...