使用keras绘制实时的loss与acc曲线
废话不多说,直接上代码,代码有注释,不懂得评论问博主即可
# -*- coding: utf-8 -*-
import keras
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
import matplotlib.pyplot as plt
import time
# 输入训练数据 keras接收numpy数组类型的数据
x = np.array([[0, 1, 0],[0, 0, 1],[1, 3, 2],[3, 2, 1]])
y = np.array([0, 0, 1, 1]).T
# 最简单的序贯模型,序贯模型是多个网络层的线性堆叠
simple_model = Sequential()
# dense层为全连接层
# 第一层隐含层为全连接层 5个神经元 输入数据的维度为3
simple_model.add(Dense(5, input_dim=3, activation='relu'))
# 第二个隐含层 4个神经元
simple_model.add(Dense(4, activation='relu'))
# 输出层为1个神经元
simple_model.add(Dense(1, activation='sigmoid'))
# 编译模型,训练模型之前需要编译模型
# 编译模型的三个参数:优化器、损失函数、指标列表
simple_model.compile(optimizer='sgd', loss='mean_squared_error', metrics=['accuracy'])class LossHistory(keras.callbacks.Callback):#函数开始时创建盛放loss与acc的容器def on_train_begin(self, logs={}):self.losses = {'batch': [], 'epoch': []}self.accuracy = {'batch': [], 'epoch': []}self.val_loss = {'batch': [], 'epoch': []}self.val_acc = {'batch': [], 'epoch': []}#按照batch来进行追加数据def on_batch_end(self, batch, logs={}):#每一个batch完成后向容器里面追加loss,accself.losses['batch'].append(logs.get('loss'))self.accuracy['batch'].append(logs.get('acc'))self.val_loss['batch'].append(logs.get('val_loss'))self.val_acc['batch'].append(logs.get('val_acc'))#每五秒按照当前容器里的值来绘图if int(time.time()) % 5 == 0:self.draw_p(self.losses['batch'], 'loss', 'train_batch')self.draw_p(self.accuracy['batch'], 'acc', 'train_batch')self.draw_p(self.val_loss['batch'], 'loss', 'val_batch')self.draw_p(self.val_acc['batch'], 'acc', 'val_batch')def on_epoch_end(self, batch, logs={}):# 每一个epoch完成后向容器里面追加loss,accself.losses['epoch'].append(logs.get('loss'))self.accuracy['epoch'].append(logs.get('acc'))self.val_loss['epoch'].append(logs.get('val_loss'))self.val_acc['epoch'].append(logs.get('val_acc'))# 每五秒按照当前容器里的值来绘图if int(time.time()) % 5 == 0:self.draw_p(self.losses['epoch'], 'loss', 'train_epoch')self.draw_p(self.accuracy['epoch'], 'acc', 'train_epoch')self.draw_p(self.val_loss['epoch'], 'loss', 'val_epoch')self.draw_p(self.val_acc['epoch'], 'acc', 'val_epoch')#绘图,这里把每一种曲线都单独绘图,若想把各种曲线绘制在一张图上的话可修改此方法def draw_p(self, lists, label, type):plt.figure()plt.plot(range(len(lists)), lists, 'r', label=label)plt.ylabel(label)plt.xlabel(type)plt.legend(loc="upper right")plt.savefig(type+'_'+label+'.jpg')#由于这里的绘图设置的是5s绘制一次,当训练结束后得到的图可能不是一个完整的训练过程(最后一次绘图结束,有训练了0-5秒的时间)#所以这里的方法会在整个训练结束以后调用def end_draw(self):self.draw_p(self.losses['batch'], 'loss', 'train_batch')self.draw_p(self.accuracy['batch'], 'acc', 'train_batch')self.draw_p(self.val_loss['batch'], 'loss', 'val_batch')self.draw_p(self.val_acc['batch'], 'acc', 'val_batch')self.draw_p(self.losses['epoch'], 'loss', 'train_epoch')self.draw_p(self.accuracy['epoch'], 'acc', 'train_epoch')self.draw_p(self.val_loss['epoch'], 'loss', 'val_epoch')self.draw_p(self.val_acc['epoch'], 'acc', 'val_epoch')
logs_loss = LossHistory()# 训练网络 2000次
# Keras以Numpy数组作为输入数据和标签的数据类型。训练模型一般使用fit函数
simple_model.fit(x, y, epochs=20000, callbacks=[logs_loss])
# 应用模型 进行预测
y_ = simple_model.predict_classes(x[0:1])
print("[0,1,0]的分类结果:" + str(y[0]))logs_loss.end_draw()
使用keras绘制实时的loss与acc曲线相关推荐
- Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线
1 深度学习训练过程中实时动态显示loss和acc曲线 可参考代码如下: # -*- coding: utf-8 -*-import matplotlib.pyplot as pltif __name ...
- pytorch 利用tensorboard显示loss,acc曲线等
版本信息: python 3.6 pytorch 0.4.1 tensorflow-gpu 1.4.0 tensorboard 1.6.0 [tensorflow 与 tensorboard版本匹配] ...
- tensorboard画loss及acc曲线
转载 https://blog.csdn.net/weixin_39674098/article/details/79242073
- python学习——绘制loss、acc学习曲线
两种方式 1.直接画 # model.fit返回acc和loss的日志 hist=model.fit(train_data, train_label,batch_size=64,epochs=2,va ...
- pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
我用的是Anaconda3 ,用spyder编写pytorch的代码,在Anaconda3中新建了一个pytorch的虚拟环境(虚拟环境的名字就叫pytorch). 以下内容仅供参考哦~~ 1.首先打 ...
- ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线
在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...
- CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)
CAFFE-SSD中loss.accuracy曲线可视化(双Y轴) 1.利用输出的.log文件(应该在caffe/jobs/VGGNet/VOC0712/SSD_300x300目录下)生成.test ...
- 如何根据keras的fit后返回的history绘制loss acc曲线
model.summary() #绘制acc-loss曲线 import matplotlib.pyplot as plt plt.plot(hist.history['loss'],color='r ...
- keras 训练 loss和acc可视化
import keras from keras.utils import np_utils import matplotlib.pyplot as plt %matplotlib inline#写一个 ...
最新文章
- 如何使用工具包 (NLTK) 开发NLP 项目?(附教程)
- matlab生成ai图片,MATLAB绘图:导出矢量图
- Spark的transformation和action算子简介
- oracle 2018 版本,Oracle 最新版本变化 转帖
- PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
- python规范化字符串_python中正确的字符串编码规范
- 最常问的MySQL面试题集合
- 【C语言】创建一个函数,并调用比较三个数的大小
- linux安装光盘制作工具,(三)Linux平台多操作系统安装盘制作工具
- Java教程:Java字符串的替换(replace()、replaceFirst()和replaceAll())
- bash shell set 命令
- 虎牙服务器升级维护中 请留意公告,魔渊之刃像素危城系列活动上线-更新公告1月21日...
- JavaScript——DOM文档
- 实体与实体之间的联系
- 树莓派无法解析域名(即无法连网,更新软件失败)
- linux云服务器,内存占用率很高解决方法
- Vue实现图形化积木式编程(十三)
- DTM、DEM与DSM的区别
- 文件或目录损坏且无法读取 解决方法
- 上传file时accept限制文件类型pdf、doc、docx、 jpg、 png、xls 、xlsx等格式
热门文章
- Android Drawable (可绘制图像)
- Xposed模块开发教程,该篇讲解通俗易懂,所以转发
- 性能架构师看IT之家的性能问题及解法
- fst 共享后缀_关于Lucene的词典FST深入剖析
- 微信小程序点击按钮弹出弹窗_微信小程序开发弹出框实现方法
- 【Kotlin 协程】Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )
- 1、swift开发iOS——基础
- LTE学习笔记--载波聚合
- AT24C02存储与读取数据
- 手机的IMEI、MEID、ICCID、UDID、IMSI