Keras源码记录,持续更新
Keras.engine
training.py
Model类被定义在keras.engine.training.py文件中,这个类继承自.network.py文件中的Network类,我们比较熟悉的model.summary(),model.get_layer()是Network类中的成员函数,而model类中本身实现的函数则是fit(),compile()这些成员函数。
base_layer.py
自定义层时,需要继承tf.keras.layers.Layer,这个类在这个文件中被定义。阅读源码可知self.add_weight()本质上是调用了tf.Variable()。
Keras.layers
merge.py
最常用的Concatenate类被定义在这里,concatenate()函数返回的就是这个类的一个实例,其最重要的参数是axis,指明了需要合并的目标轴。
core.py
核心类,比较常用的Dense层,Activation层存储在这里面。
Dense层call()本质上就是tf.bais_add(tf.tensordot(w, inputs)),外加调用了tf.keras.activations.py中的get函数,也就是通过传激活函数的名字来调用相应的函数。当然,这也是Activation类中的call()函数实现。