keras编译与训练过程
1.定义+compile
self.model = Model(inputs=[self.input_layer, self.sf_layer], outputs=output) #或 model = Sequential([ Dense(32, input_shape=(784,)), Activation('relu'), Dense(10), Activation('softmax'), ])
定义出了计算图的结构。
在训练之前要配置学习过程,通过compile来实现:
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
而这里的loss是和模型定义的输出以及在fit时的y有关的,就是计算两者的损失。
2.例子
2.1 定义计算图
根据选择的模型类型,初始化模型参数。
开始创建计算图:
这里的Input就是模型的输入,对应mode.fit中的x。下面是计算output的部分:
//上图中的slice只返回output,因为它的index被初始化为了0。(那么它在这里有什么意义?)
这是最终定义模型的语句,将计算图实例化了。
2.2 compile
编译使用的是zinb损失。
调用fit输入数据跑模型,其中output是用来和模型计算图中的输出一起一起计算loss的。
现在来关注一下loss:
模型初始化的时候将Π和散度初始化了进去,在loss函数的时候只有真的值和模型的预测输出,参数作为模型。
最终model.fit的输出是loss。