21、Keras高层API

    (一) Keras.Metrics

  • metrics     新建metrics
  • update_state  在metrics列表中添加数据(更新数据),[loss1, loss2, loss3......]
  • result().numpy()  在需要使用的时候得到结果
  • reset_states   清除状态

 (二)compile&fit ,提供了一个快捷训练的方法

  • compile  编译,类似于一个装载的功能,提供了train的loss选择,优化器的选择和评估指标的选择
  • fit    完成标准的训练流程
  • evaluate  测试
  • predict   对新的样本使用模型进行预测

1、metrics   测量尺,内置的评估指标算子

  在训练的过程中,我们经常需要计算loss和acc并进行记录,因为每一次的loss和acc并不是指每一个batch的值,而是指一个epoch的值,因此需要建立一个列表,用来记录每一个loss或者acc,一个epoch结束后对所有的loss或者acc做平均值处理并进行打印,以便观察整个模型在上一次打印和这一次打印之间模型的变化情况,将这个功能称为metrics

 Keras != tf.keras

 1 # Step1 建立一个meter
 2 acc_meter = metrics.Accuracy()
 3 loss_meter = metrics.Mean()  #求平均值
 4 
 5 # step2 更新数据
 6 loss_meter.update_state(loss)
 7 acc_meter.update_state(y, pred)
 8 
 9 # step3 得到平均数据
10 print(step, "loss:", loss_meter.result().numpy())
11 print(step, "evaluate acc: ", total_correct/total, acc_meter.result().numpy())
12 
13 # step4 清除缓存 当得到一个时间戳的loss时,需要计算下个循环的时候如果不进行清除,那么就会将以前的缓存起来
14 if step % 100 == 0:
15     print(step, "loss", loss_meter.result().numpy())
16     loss_meter.reset_states()
17 
18 if step % 500 == 0:
19     total, total_correct = 0., 0
20     acc_meter.reset_states()

 2、compile&fit

(1)计算和优化梯度的标准流程图:

   

 使用compile:

   

(2)处理循环

  标准:

   

   使用fit

  

 (3)测试代码 , valuation 评估  

   

 使用compile&fit

1 network.compile(optimizer=optimizers.Adam(lr=1e-3),
2                 loss=tf.losses.CategoricalCrossentropy(from_logits=True),
3                 metrics=['accuracy'])
4 network.fit(train_db, epochs=1500, validation_data=test_db, validation_freq=2)
posted on 2019-12-25 15:38  Luaser  阅读(541)  评论(0编辑  收藏  举报