深度学习笔记-使用神经网络进行手写数字分类(1)

:关于类和标签的说明。在机器学习中,分类问题中的某个类别叫做类(class)。数据点叫做样本(Sample)。某个样本对应的类叫做标签(lable)。

  • MNIST数据集预加载在Keras库中
from keras.datasets import mnist
(train_images,train_labels),(test_images,test_labels)=mnist.load_data()

:train_images和train_labels组成了训练集(training set),模型将从这些数据中进行学习。然后在测试集(test set,即test_images,test_labels)上对模型进行测试
图像被编码为Numpy数组,而标签是数字数组。取值范围为0-9.图像和标签一一对应。
训练数据

>>>train_images.shape
(60000,28,28)
>>>len(train_labels)
60000
>>>train_labels
array([5,0,4...5,6,8],dype=unit8)

测试数据

>>>test_images.shape
(10000,28,28)
>>>len(test_labels)
10000
>>>test_labels
array([7,2,1...4,5,6],dtype=unit8)

接下来,首先将训练数据(train_images和train_labels)输入神经网络,其次,网络学习 将图像和标签关联在一起,最后,网络对test_images生成预测

  • 网络架构
from keras import models
from keras imort layers

network =models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmasx'))

:层是一种数据处理模块,你可以将它看成数据过滤器。大多数深度学习都是将简单的层链接起来,从而实现渐进式的数据蒸馏。深度学习模型就像是数据处理的筛子,包含一系列越来越精细的数据过滤器。
:本例中的网络包含两个Dense层,他们是密集连接的神经层,第二层是一个10路的softmax层。它将返回一个由10个概率值(总和为1)组成的数组,每个概率值表示当前数字图属于10个数字类别中某一个的概率。
:要想训练网络,我们还需要选择编译步骤的三个参数。
1.损失函数(loss function)
网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进
2.优化器(optimizer)
基于训练数据和损失函数来更新网络的机制
3.在训练和测试过程中需要的监控的指标(metric)
本例只关心精度,即正确分类的图像所占得比例

  • 编译步骤
network.compile(optimizer='rmsprop',
				loss='Categorical_crossentropy',
				metrics=['accuracy'])

:在开始训练之前,我们将对数据进行预处理,将其变换为网络要求的形状,并缩放到所有值都在[0,1]区间。

  • 准备数据图像
train_images=train_images.reshape((6000,28*28))
train_images=train_images.astype(''float32)/255

train_images=test_images.reshape((10000,28*28))
train_images=test_images.astype('float32')/255

我们还需要对标签进行分类编码

  • 准备标签
from keras.utils import to_categorical

train_labels=to_categorical(train_labels)
test_labels=to_categorical(test_labels)

:现在我们开始训练网络,在Keras中这一步是通过调用网络的fit方法来完成的-我们在训练数据上拟合模型。

>>>test_loss,test_acc=network.evaluate(test_images,test_labels)
>>>print('test_acc:',test_acc)
test_acc:0.9785

:训练过程中显示了两个数字:一个是网络在训练数据上的损失(loss),另一个是网络在训练数据上的精度(acc)
:训练数据达到98.9%的精度,而测试集精度为97.8。训练精度和测试精度之间的这种差距是过拟合造成的。过拟合是指机器学习模型在新数据上的性能往往比在训练数据上要差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁡⁢⁡布莱克先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值