废话不多说,直接上代码,代码有注释,不懂得评论问博主即可

# -*- 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曲线相关推荐

  1. Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线

    1 深度学习训练过程中实时动态显示loss和acc曲线 可参考代码如下: # -*- coding: utf-8 -*-import matplotlib.pyplot as pltif __name ...

  2. pytorch 利用tensorboard显示loss,acc曲线等

    版本信息: python 3.6 pytorch 0.4.1 tensorflow-gpu 1.4.0 tensorboard 1.6.0 [tensorflow 与 tensorboard版本匹配] ...

  3. tensorboard画loss及acc曲线

    转载 https://blog.csdn.net/weixin_39674098/article/details/79242073

  4. python学习——绘制loss、acc学习曲线

    两种方式 1.直接画 # model.fit返回acc和loss的日志 hist=model.fit(train_data, train_label,batch_size=64,epochs=2,va ...

  5. pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率

    我用的是Anaconda3 ,用spyder编写pytorch的代码,在Anaconda3中新建了一个pytorch的虚拟环境(虚拟环境的名字就叫pytorch). 以下内容仅供参考哦~~ 1.首先打 ...

  6. ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线

    在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...

  7. CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)

    CAFFE-SSD中loss.accuracy曲线可视化(双Y轴) 1.利用输出的.log文件(应该在caffe/jobs/VGGNet/VOC0712/SSD_300x300目录下)生成.test ...

  8. 如何根据keras的fit后返回的history绘制loss acc曲线

    model.summary() #绘制acc-loss曲线 import matplotlib.pyplot as plt plt.plot(hist.history['loss'],color='r ...

  9. keras 训练 loss和acc可视化

    import keras from keras.utils import np_utils import matplotlib.pyplot as plt %matplotlib inline#写一个 ...

最新文章

  1. 如何使用工具包 (NLTK) 开发NLP 项目?(附教程)
  2. matlab生成ai图片,MATLAB绘图:导出矢量图
  3. Spark的transformation和action算子简介
  4. oracle 2018 版本,Oracle 最新版本变化 转帖
  5. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
  6. python规范化字符串_python中正确的字符串编码规范
  7. 最常问的MySQL面试题集合
  8. 【C语言】创建一个函数,并调用比较三个数的大小
  9. linux安装光盘制作工具,(三)Linux平台多操作系统安装盘制作工具
  10. Java教程:Java字符串的替换(replace()、replaceFirst()和replaceAll())
  11. bash shell set 命令
  12. 虎牙服务器升级维护中 请留意公告,魔渊之刃像素危城系列活动上线-更新公告1月21日...
  13. JavaScript——DOM文档
  14. 实体与实体之间的联系
  15. 树莓派无法解析域名(即无法连网,更新软件失败)
  16. linux云服务器,内存占用率很高解决方法
  17. Vue实现图形化积木式编程(十三)
  18. DTM、DEM与DSM的区别
  19. 文件或目录损坏且无法读取 解决方法
  20. 上传file时accept限制文件类型pdf、doc、docx、 jpg、 png、xls 、xlsx等格式

热门文章

  1. Android Drawable (可绘制图像)
  2. Xposed模块开发教程,该篇讲解通俗易懂,所以转发
  3. 性能架构师看IT之家的性能问题及解法
  4. fst 共享后缀_关于Lucene的词典FST深入剖析
  5. 微信小程序点击按钮弹出弹窗_微信小程序开发弹出框实现方法
  6. 【Kotlin 协程】Flow 异步流 ⑤ ( 流的上下文 | 上下文保存 | 查看流发射和收集的协程 | 不能在不同协程中执行流的发射和收集操作 | 修改流发射的协程上下文 | flowOn函数 )
  7. 1、swift开发iOS——基础
  8. LTE学习笔记--载波聚合
  9. AT24C02存储与读取数据
  10. 手机的IMEI、MEID、ICCID、UDID、IMSI