本篇是keras源码笔记系列的第三篇。在前两篇中,我们分析了keras对Tensor和Layer等概念的处理,并说明了它们是如何作用别弄个构成有向无环图的。本篇着眼于多层网络模型层面的抽象,即与用户距离最近的接口,源代码文件是/keras/engine/training.py和/keras/model.py,要观察的类是Model
和Sequential
。
本篇继续讨论keras的源码结构。
第一篇源码笔记中我们观察了Layer
, Tensor
和Node
是如何耦合在一起的,而本篇的重点是观察多层网络构成的有向无环图(DAG)。主要涉及的文件为keras/engine/topology.py, 要观察的类是Container
。
权重衰减(weight dacay),即L^2范数惩罚,是最常见的正则化技术之一。本文将介绍它是如何起作用的。主要材料来自The Deep Learning Book。
Keras架构的主要逻辑实现在/keras/engine/topology.py中,主要有两个基类Node()
和Layer()
,一个重要函数Input()
。具体地,
Layer()
是一个计算层的抽象,完成网络中对Tensor的计算过程;Node()
描述两个层之间连接关系的抽象,配合Layer()
构建DAG;Input()
实例化一个特殊的Layer
(InputLayer
),将backend
(TensorFlow或Theano)建立的Tensor对象转化为Keras Tensor对象。本文主要记录使用TensorFlow训练模型中与试验管理相关的最佳实践,主要包括模型训练的大致代码框架、模型的保存与恢复、训练过程的监测、随机性的控制等。主要材料来自CS 20SI: Tensorflow for Deep Learning Research。
本文讨论LSTM网络的Pytorch实现,兼论Pytorch库的代码组织方式和架构设计。
Dropout技术是Srivastava等人在2012年提出的技术,现在已然成为各种深度模型的标配。其中心思想是随机地冻结一部分模型参数,用于提高模型的泛化性能。
Update your browser to view this website correctly. Update my browser now