Keras在mnist上的CNN实践,并且自定义loss函数曲线图
使用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函数曲线图相关推荐
- Keras自定义Loss函数
Keras作为一个深度学习库,非常适合新手.在做神经网络时,它自带了许多常用的目标函数,优化方法等等,基本能满足新手学习时的一些需求.具体包含目标函数和优化方法.但它也支持用户自定义目标函数,下边介绍 ...
- 比用Pytorch框架快200倍!0.76秒后,笔记本上的CNN就搞定了MNIST | 开源
博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在MNIST上进行训练,可以说是计算机视觉里的"Hello World"任务了. 而如果使用PyTorch的标准代码训练 ...
- 笔记本上的CNN搞定了MNIST
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 在M ...
- pytorch学习笔记(2):在MNIST上实现一个CNN
参考文档:https://mp.weixin.qq.com/s/1TtPWYqVkj2Gaa-3QrEG1A 这篇文章是在一个大家经常见到的数据集 MNIST 上实现一个简单的 CNN.我们会基于上一 ...
- 使用tf.keras搭建mnist手写数字识别网络
使用tf.keras搭建mnist手写数字识别网络 目录 使用tf.keras搭建mnist手写数字识别网络 1.使用tf.keras.Sequential搭建序列模型 1.1 tf.keras.Se ...
- TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络
TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...
- 华为在深度学习平台上的优化实践
"Kubernetes Meetup 中国 2017"--北京站3.18落幕啦!本次分享嘉宾彭靖田来自华为,他的分享题目是<华为在深度学习平台上的优化实践>.实录将从深 ...
- keras构建卷积神经网络(CNN(Convolutional Neural Networks))进行图像分类模型构建和学习
keras构建卷积神经网络(CNN(Convolutional Neural Networks))进行图像分类模型构建和学习 全连接神经网络(Fully connected neural networ ...
- 基于Keras的卷积神经网络(CNN)可视化
基于Keras的卷积神经网络(CNN)可视化 标签(空格分隔): 深度学习 卷积神经网络可视化 本文整理自Deep Learning with Python,书本上完整的代码在 这里的5.4节,并陪有 ...
最新文章
- 拷贝构造函数和赋值函数的一些知识
- (五)DTD验证XML文档
- Linux终端登录微信,Ubuntu18.04安装微信(Linux通用)
- leetcode 410. 分割数组的最大值(二分法)
- jdk下载--操作系统
- 【HDOJ6992】Lawn of the Dead(线段树×, 模拟大法好√)
- [软件架构]基于PluginRT的插件编程
- android inflater 用法
- 电脑qq音乐显示无法代理服务器,电脑QQ音乐软件无法登录如何解决
- 如何开启系统打印机服务器,[两种方法]win7系统的打印机服务如何启动?
- gcc: error trying to exec ‘cc1plus‘: execvp: Permission denied
- PhalApi 事务操作
- 工作记忆中表征状态的振荡控制
- android wifi tethering,新增Wi-Fi/USB Tethering功能
- app下载页面html源码,带弹幕 ,3分钟安装
- python爬取京东评论分析_Python爬取京东商品评价(动态网页的爬取)
- HDU6608 Fansblog
- world wind for web的hello world
- 2022亚太杯A题思路
- shell之系统命令基础
热门文章
- 操作系统的中断,陷阱,异常
- 为什么消息队列不实现精准一次(exactly once)?
- 加载gif动图_【知乎编辑技巧】GIF动图 的插入 2020.05
- sublime python插件_sublime text 3 + python配置,完整搭建及常用插件安装
- Docker通过Cgroup 资源配置
- 利用Word2010给汉字添加汉语拼音
- python3.6字典有序_Python如何按值对字典进行排序?
- 默认登录_常见品牌路由器默认登录密码大全
- 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
- arm linux应用调用rtc接口,ARMLinux驱动RTC(实时时钟)驱动分析