使用keras实现CNN,直接上代码:

from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras import backend as Kclass LossHistory(keras.callbacks.Callback):def on_train_begin(self, logs={}):self.losses = {'batch':[], 'epoch':[]}self.accuracy = {'batch':[], 'epoch':[]}self.val_loss = {'batch':[], 'epoch':[]}self.val_acc = {'batch':[], 'epoch':[]}def on_batch_end(self, batch, logs={}):self.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'))def on_epoch_end(self, batch, logs={}):self.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'))def loss_plot(self, loss_type):iters = range(len(self.losses[loss_type]))plt.figure()# accplt.plot(iters, self.accuracy[loss_type], 'r', label='train acc')# lossplt.plot(iters, self.losses[loss_type], 'g', label='train loss')if loss_type == 'epoch':# val_accplt.plot(iters, self.val_acc[loss_type], 'b', label='val acc')# val_lossplt.plot(iters, self.val_loss[loss_type], 'k', label='val loss')plt.grid(True)plt.xlabel(loss_type)plt.ylabel('acc-loss')plt.legend(loc="upper right")plt.show()history = LossHistory()batch_size = 128
nb_classes = 10
nb_epoch = 20
img_rows, img_cols = 28, 28
nb_filters = 32
pool_size = (2,2)
kernel_size = (3,3)
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)
X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
print('X_train shape:', X_train.shape)
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)model3 = Sequential()model3.add(Convolution2D(nb_filters, kernel_size[0] ,kernel_size[1],border_mode='valid',input_shape=input_shape))
model3.add(Activation('relu'))model3.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model3.add(Activation('relu'))model3.add(MaxPooling2D(pool_size=pool_size))
model3.add(Dropout(0.25))model3.add(Flatten())model3.add(Dense(128))
model3.add(Activation('relu'))
model3.add(Dropout(0.5))model3.add(Dense(nb_classes))
model3.add(Activation('softmax'))model3.summary()model3.compile(loss='categorical_crossentropy',optimizer='adadelta',metrics=['accuracy'])model3.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch,verbose=1, validation_data=(X_test, Y_test),callbacks=[history])score = model3.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])#acc-loss
history.loss_plot('epoch')

Keras在mnist上的CNN实践,并且自定义loss函数曲线图相关推荐

  1. Keras自定义Loss函数

    Keras作为一个深度学习库,非常适合新手.在做神经网络时,它自带了许多常用的目标函数,优化方法等等,基本能满足新手学习时的一些需求.具体包含目标函数和优化方法.但它也支持用户自定义目标函数,下边介绍 ...

  2. 比用Pytorch框架快200倍!0.76秒后,笔记本上的CNN就搞定了MNIST | 开源

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在MNIST上进行训练,可以说是计算机视觉里的"Hello World"任务了. 而如果使用PyTorch的标准代码训练 ...

  3. 笔记本上的CNN搞定了MNIST

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 在M ...

  4. pytorch学习笔记(2):在MNIST上实现一个CNN

    参考文档:https://mp.weixin.qq.com/s/1TtPWYqVkj2Gaa-3QrEG1A 这篇文章是在一个大家经常见到的数据集 MNIST 上实现一个简单的 CNN.我们会基于上一 ...

  5. 使用tf.keras搭建mnist手写数字识别网络

    使用tf.keras搭建mnist手写数字识别网络 目录 使用tf.keras搭建mnist手写数字识别网络 1.使用tf.keras.Sequential搭建序列模型 1.1 tf.keras.Se ...

  6. TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络

    TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...

  7. 华为在深度学习平台上的优化实践

    "Kubernetes Meetup 中国 2017"--北京站3.18落幕啦!本次分享嘉宾彭靖田来自华为,他的分享题目是<华为在深度学习平台上的优化实践>.实录将从深 ...

  8. keras构建卷积神经网络(CNN(Convolutional Neural Networks))进行图像分类模型构建和学习

    keras构建卷积神经网络(CNN(Convolutional Neural Networks))进行图像分类模型构建和学习 全连接神经网络(Fully connected neural networ ...

  9. 基于Keras的卷积神经网络(CNN)可视化

    基于Keras的卷积神经网络(CNN)可视化 标签(空格分隔): 深度学习 卷积神经网络可视化 本文整理自Deep Learning with Python,书本上完整的代码在 这里的5.4节,并陪有 ...

最新文章

  1. 拷贝构造函数和赋值函数的一些知识
  2. (五)DTD验证XML文档
  3. Linux终端登录微信,Ubuntu18.04安装微信(Linux通用)
  4. leetcode 410. 分割数组的最大值(二分法)
  5. jdk下载--操作系统
  6. 【HDOJ6992】Lawn of the Dead(线段树×, 模拟大法好√)
  7. [软件架构]基于PluginRT的插件编程
  8. android inflater 用法
  9. 电脑qq音乐显示无法代理服务器,电脑QQ音乐软件无法登录如何解决
  10. 如何开启系统打印机服务器,[两种方法]win7系统的打印机服务如何启动?
  11. gcc: error trying to exec ‘cc1plus‘: execvp: Permission denied
  12. PhalApi 事务操作
  13. 工作记忆中表征状态的振荡控制
  14. android wifi tethering,新增Wi-Fi/USB Tethering功能
  15. app下载页面html源码,带弹幕 ,3分钟安装
  16. python爬取京东评论分析_Python爬取京东商品评价(动态网页的爬取)
  17. HDU6608 Fansblog
  18. world wind for web的hello world
  19. 2022亚太杯A题思路
  20. shell之系统命令基础

热门文章

  1. 操作系统的中断,陷阱,异常
  2. 为什么消息队列不实现精准一次(exactly once)?
  3. 加载gif动图_【知乎编辑技巧】GIF动图 的插入 2020.05
  4. sublime python插件_sublime text 3 + python配置,完整搭建及常用插件安装
  5. Docker通过Cgroup 资源配置
  6. 利用Word2010给汉字添加汉语拼音
  7. python3.6字典有序_Python如何按值对字典进行排序?
  8. 默认登录_常见品牌路由器默认登录密码大全
  9. 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
  10. arm linux应用调用rtc接口,ARMLinux驱动RTC(实时时钟)驱动分析