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。

posted @ 2021-01-29 13:46  lypbendlf  阅读(119)  评论(0编辑  收藏  举报