视频学习来源

https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553

笔记

Mnist分类程序

import numpy as np
from keras.datasets import mnist #将会从网络下载mnist数据集
from keras.utils import np_utils
from keras.models import Sequential #序列模型
from keras.layers import Dense
from keras.optimizers import SGD

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.

from ._conv import register_converters as _register_converters

Using TensorFlow backend.

第一次运行时,建议先下载数据集

1 打开cmd 输入python 回车

2 将上面的代码输入,导入相关文件包库

3 输入

(x_train,y_train),(x_test,y_test)=mnist.load_data()
回车
启动下载。加载完成便可在jupyter notebook中运行

#载入数据
(x_train,y_train),(x_test,y_test)=mnist.load_data()
#查看格式
#(60000,28,28)
print('x_shape:',x_train.shape)
#(60000)
print('y_shape:',y_train.shape)
#(60000,28,28)->(60000,784)
#行数60000,列-1表示自动设置
#除以255是做数据归一化处理
x_train=x_train.reshape(x_train.shape[0],-1)/255.0 #转换数据格式
x_test=x_test.reshape(x_test.shape[0],-1)/255.0 #转换数据格式
#label标签转换成 one hot 形式
y_train=np_utils.to_categorical(y_train,num_classes=10) #分成10类
y_test=np_utils.to_categorical(y_test,num_classes=10) #分成10类 #创建模型,输入754个神经元,输出10个神经元
#偏执值初始值设为1(默认为0)
model=Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
]) #定义优化器
#学习速率为0.2
sgd=SGD(lr=0.2) #定义优化器,损失函数,训练效果中计算准确率
model.compile(
optimizer=sgd, #sgd优化器
loss='mse', #损失用均方差
metrics=['accuracy'], #计算准确率
) #训练(不同于之前,这是新的训练方式)
#六万张,每次训练32张,训练10个周期(六万张全部训练完算一个周期)
model.fit(x_train,y_train,batch_size=32,epochs=10) #评估模型
loss,accuracy=model.evaluate(x_test,y_test) print('\ntest loss',loss)
print('accuracy',accuracy)

x_shape: (60000, 28, 28)
y_shape: (60000,)
Epoch 1/10
60000/60000 [==============================] - 4s 65us/step - loss: 0.0384 - acc: 0.7673
Epoch 2/10
60000/60000 [==============================] - 5s 88us/step - loss: 0.0204 - acc: 0.8808
Epoch 3/10
60000/60000 [==============================] - 3s 57us/step - loss: 0.0178 - acc: 0.8934
Epoch 4/10
60000/60000 [==============================] - 3s 48us/step - loss: 0.0165 - acc: 0.8995
Epoch 5/10
60000/60000 [==============================] - 3s 45us/step - loss: 0.0157 - acc: 0.9038
Epoch 6/10
60000/60000 [==============================] - 3s 46us/step - loss: 0.0151 - acc: 0.9064
Epoch 7/10
60000/60000 [==============================] - 3s 48us/step - loss: 0.0146 - acc: 0.9093
Epoch 8/10
60000/60000 [==============================] - 3s 49us/step - loss: 0.0143 - acc: 0.9110
Epoch 9/10
60000/60000 [==============================] - 3s 46us/step - loss: 0.0140 - acc: 0.9126
Epoch 10/10
60000/60000 [==============================] - 3s 52us/step - loss: 0.0138 - acc: 0.9137
10000/10000 [==============================] - 0s 28us/step
 
test loss 0.01308599321632646
accuracy 0.9169

改用交叉熵

#定义优化器,损失函数,训练效果中计算准确率

model.compile(

optimizer=sgd, #sgd优化器

loss='categorical_crossentropy', #损失用交叉熵,速度会更快

metrics=['accuracy'], #计算准确率

)

完整代码

import numpy as np
from keras.datasets import mnist #将会从网络下载mnist数据集
from keras.utils import np_utils
from keras.models import Sequential #序列模型
from keras.layers import Dense
from keras.optimizers import SGD

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.

from ._conv import register_converters as _register_converters

Using TensorFlow backend.

#载入数据
(x_train,y_train),(x_test,y_test)=mnist.load_data()
#查看格式
#(60000,28,28)
print('x_shape:',x_train.shape)
#(60000)
print('y_shape:',y_train.shape)
#(60000,28,28)->(60000,784)
#行数60000,列-1表示自动设置
#除以255是做数据归一化处理
x_train=x_train.reshape(x_train.shape[0],-1)/255.0 #转换数据格式
x_test=x_test.reshape(x_test.shape[0],-1)/255.0 #转换数据格式
#label标签转换成 one hot 形式
y_train=np_utils.to_categorical(y_train,num_classes=10) #分成10类
y_test=np_utils.to_categorical(y_test,num_classes=10) #分成10类 #创建模型,输入754个神经元,输出10个神经元
#偏执值初始值设为1(默认为0)
model=Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
]) #定义优化器
#学习速率为0.2
sgd=SGD(lr=0.2) #定义优化器,损失函数,训练效果中计算准确率
model.compile(
optimizer=sgd, #sgd优化器
loss='categorical_crossentropy', #损失用交叉熵,速度会更快
metrics=['accuracy'], #计算准确率
) #训练(不同于之前,这是新的训练方式)
#六万张,每次训练32张,训练10个周期(六万张全部训练完算一个周期)
model.fit(x_train,y_train,batch_size=32,epochs=10) #评估模型
loss,accuracy=model.evaluate(x_test,y_test) print('\ntest loss',loss)
print('accuracy',accuracy)

x_shape: (60000, 28, 28)

y_shape: (60000,)

Epoch 1/10

60000/60000 [==============================] - 5s 82us/step - loss: 0.3782 - acc: 0.8926

Epoch 2/10

60000/60000 [==============================] - 4s 60us/step - loss: 0.3031 - acc: 0.9145

Epoch 3/10

60000/60000 [==============================] - 3s 54us/step - loss: 0.2894 - acc: 0.9186

Epoch 4/10

60000/60000 [==============================] - 3s 55us/step - loss: 0.2826 - acc: 0.9204

Epoch 5/10

60000/60000 [==============================] - 3s 54us/step - loss: 0.2773 - acc: 0.9227

Epoch 6/10

60000/60000 [==============================] - 3s 57us/step - loss: 0.2748 - acc: 0.9226

Epoch 7/10

60000/60000 [==============================] - 4s 59us/step - loss: 0.2715 - acc: 0.9239

Epoch 8/10

60000/60000 [==============================] - 4s 61us/step - loss: 0.2694 - acc: 0.9252

Epoch 9/10

60000/60000 [==============================] - 3s 55us/step - loss: 0.2664 - acc: 0.9254

Epoch 10/10

60000/60000 [==============================] - 4s 67us/step - loss: 0.2654 - acc: 0.9267

10000/10000 [==============================] - 0s 29us/step

test loss 0.28354966330975295

accuracy 0.9229

改用后精度在提高,速度也在变快

(三) Keras Mnist分类程序以及改用交叉熵对比的更多相关文章

  1. 深度学习原理与框架-Tensorflow卷积神经网络-卷积神经网络mnist分类 1.tf.nn.conv2d(卷积操作) 2.tf.nn.max_pool(最大池化操作) 3.tf.nn.dropout(执行dropout操作) 4.tf.nn.softmax_cross_entropy_with_logits(交叉熵损失) 5.tf.truncated_normal(两个标准差内的正态分布)

    1. tf.nn.conv2d(x, w, strides=[1, 1, 1, 1], padding='SAME')  # 对数据进行卷积操作 参数说明:x表示输入数据,w表示卷积核, stride ...

  2. TensorFlow学习笔记(三)MNIST数字识别问题

    一.MNSIT数据处理 MNSIT是一个非常有名的手写体数字识别数据集.包含60000张训练图片,10000张测试图片.每张图片是28X28的数字. TonserFlow提供了一个类来处理 MNSIT ...

  3. BP神经网络——交叉熵作代价函数

    Sigmoid函数 当神经元的输出接近 1时,曲线变得相当平,即σ′(z)的值会很小,进而也就使∂C/∂w和∂C/∂b会非常小.造成学习缓慢,下面有一个二次代价函数的cost变化图,epoch从15到 ...

  4. 最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

    最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写 ...

  5. 信息论随笔3: 交叉熵与TF-IDF模型

    接上文:信息论随笔2: 交叉熵.相对熵,及上上文:信息论随笔 在读<数学之美>的时候,相关性那一节对TF-IDF模型有这样一句描述:"其实 IDF 的概念就是一个特定条件下.关键 ...

  6. 关于交叉熵(cross entropy),你了解哪些

    二分~多分~Softmax~理预 一.简介 在二分类问题中,你可以根据神经网络节点的输出,通过一个激活函数如Sigmoid,将其转换为属于某一类的概率,为了给出具体的分类结果,你可以取0.5作为阈值, ...

  7. 『TensorFlow』分类问题与两种交叉熵

    关于categorical cross entropy 和 binary cross entropy的比较,差异一般体现在不同的分类(二分类.多分类等)任务目标,可以参考文章keras中两种交叉熵损失 ...

  8. 归一化(softmax)、信息熵、交叉熵

    机器学习中经常遇到这几个概念,用大白话解释一下: 一.归一化 把几个数量级不同的数据,放在一起比较(或者画在一个数轴上),比如:一条河的长度几千甚至上万km,与一个人的高度1.7m,放在一起,人的高度 ...

  9. 机器学习之路:tensorflow 深度学习中 分类问题的损失函数 交叉熵

    经典的损失函数----交叉熵 1 交叉熵: 分类问题中使用比较广泛的一种损失函数, 它刻画两个概率分布之间的距离 给定两个概率分布p和q, 交叉熵为: H(p, q) = -∑ p(x) log q( ...

随机推荐

  1. Ubuntu命令用法详解——curl命令

    简介: cURL(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工 ...

  2. Dubbo Mesh 在闲鱼生产环境中的落地实践

    本文作者至简曾在 2018 QCon 上海站以<Service Mesh 的本质.价值和应用探索>为题做了一次分享,其中谈到了 Dubbo Mesh 的整体发展思路是“借力开源.反哺开源” ...

  3. Spring Cloud Alibaba基础教程:Nacos的集群部署

    继续说说生产环境的Nacos搭建,通过上一篇<Spring Cloud Alibaba基础教程:Nacos的数据持久化>的介绍,我们已经知道Nacos对配置信息的存储原理,在集群搭建的时候 ...

  4. 将个人博客从GitHub迁移至阿里云服务器过程总结

    让我们先回顾下前两篇博客: 程序员如何从0到1搭建自己的技术博客 在个人博客中优雅的使用Gitalk评论插件 通过前两篇博客,我们了解了如何快速的从0到1搭建一个个人博客并使用了Gitalk评论插件, ...

  5. 折腾Java设计模式之解释器模式

    解释器模式 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 意图 给定一个语言,定义它的文法表 ...

  6. javascript语言精粹-笔记

    walkDOM function walkTheDOM(node, func) { func(node); node = node.firstChild; while (node) { walkThe ...

  7. ArcPy 将mxd格式转换为msd格式

    在控制程序进行地图服务更新时,如果只是修改MXD中的渲染是不行的,需要写脚本将MXD转换为MSD,替换原有的MSD文件,并重新启动地图服务,这样才能读取到新的渲染方式. 附上Python代码: # - ...

  8. 排错-升级Exchange 2013 CU22后程序名称显示异常

    近期在按需更新Exchange 2013 CU22补丁以便解决Microsoft Exchange Server ADV190007 Guidance for "PrivExchange&q ...

  9. 两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一)

    背景: 上一篇:ASP.Net Core on Linux (CentOS7)共享第三方依赖库部署 已经交待了背景,这篇就省下背景了. 折腾的过程分两步: 第一步是:本机跑虚拟机部署试一下: 第二步是 ...

  10. GitHub开源:SQLite 增强组件 Sheng.SQLite.Plus

    Github:https://github.com/iccb1013/Sheng.SQLite.Plus Sheng.SQLite.Plus 是一个对直接使用 ADO.NET 方式操作 SQLite ...