在Keras中使用tensorboard可视化acc等曲线

1.使用tensorboard可视化ACC,loss等曲线

 1 keras.callbacks.TensorBoard(log_dir='./Graph', 
 2                     histogram_freq= 0 ,  
 3                     write_graph=True, 
 4                 write_images=True)
 5 tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', 
 6                                          histogram_freq= 0, 
 7                                          write_graph=True, 
 8                                          write_images=True)
 9 …
10 …
11 model.compile(optimizer=optim,
12               loss=MultiboxLoss(NUM_CLASSES, neg_pos_ratio=2.0).compute_loss, metrics=['accuracy'])
13 nb_epoch = 30
14 history = model.fit_generator(gen.generate(True), gen.train_batches,
15                               nb_epoch, verbose=1,
16                              callbacks=[tbCallBack],
17                              validation_data=gen.generate(False),
18                               nb_val_samples=gen.val_batches,
19                               nb_worker=1)

然后新开一个终端

输入:

tensorboard --logdir path_to_current_dir/Graph 

之后打开终端给出的网址即可。

2.直接使用matplotlib画出训练LOSS与ACC曲线

第一步:

 1 # define the function
 2 def training_vis(hist):
 3     loss = hist.history['loss']
 4     val_loss = hist.history['val_loss']
 5     acc = hist.history['acc']
 6     val_acc = hist.history['val_acc']
 7 
 8     # make a figure
 9     fig = plt.figure(figsize=(8,4))
10     # subplot loss
11     ax1 = fig.add_subplot(121)
12     ax1.plot(loss,label='train_loss')
13     ax1.plot(val_loss,label='val_loss')
14     ax1.set_xlabel('Epochs')
15     ax1.set_ylabel('Loss')
16     ax1.set_title('Loss on Training and Validation Data')
17     ax1.legend()
18     # subplot acc
19     ax2 = fig.add_subplot(122)
20     ax2.plot(acc,label='train_acc')
21     ax2.plot(val_acc,label='val_acc')
22     ax2.set_xlabel('Epochs')
23     ax2.set_ylabel('Accuracy')
24     ax2.set_title('Accuracy  on Training and Validation Data')
25     ax2.legend()
26     plt.tight_layout()

第二步:

1 # train the model
2 hist = model.fit(...)

第三步:

1 # call the function
2 training_vis(hist)