深度学习day3(深度网络的数学基础)

一.回顾

1.什么是深度学习?

前两篇流水账大概了解一下子深度学习是什么,现在正是进入学习

二 .初识神经网络

【1】以一个例子为例

如:使用 Python 的 Keras 库来学习手写数字分类

  1. 解决的问题是,将手写数字的灰度图像(28 像素×28 像素)划分到 10 个类中(0~9)。
  2. 使用的数据集:MN这个数据集包含 60 000 张训练图像和 10 000 张测试图
    像,由美国国家标准与技术研究院ST 数据集(它是机器学习领域的一个经典数据集)
1. 类与标签

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

2. 加载Keras中的MNIST数据集、
from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

第一句:加载Keras中的mnist数据集
【MNIST数据集预先加载在Keras中,其中包括了4个Numpy数组】
第二句:train_images与’train_labels组成了训练集(training set ),模型将从这些数据中进行学习。然后在测试集(test set,即train_images和test_lables)上队模型进行测试。
【在训练集中进行学习学,在测试集中进行测试】
图像在编码为Nump数组,而标签是数字数组,取值范围0~9.图像和标签一一对应

3. 观察训练集与测试集
  • 观察训练数据:
>>> train_images.shape//训练集数据特征的大小
(60000, 28, 28)
>>> len(train_labels)//训练集标签的长度
60000
>>> train_labels//打印出标签
array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)
  • 下面是测试数据:
>>> test_images.shape
(10000, 28, 28)
>>> len(test_labels)
10000
>>> test_labels
array([7, 2, 1, ..., 4, 5, 6], dtype=uint8)
4. 进入神经网络学习
1)工作流程概述

首先,将训练数据(train_images 和 train_labels)输入神经网络;
其次,网络学习将图像和标签关联在一起;
最后,网络对 test_images 生成预测,
而我们将验证这些预测与 test_labels 中的标签是否匹配。

2)网络架构
from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(layers.Dense(10, activation='softmax'))
3)层的设定
  • 神经网络的核心组件是层(layer),是一种数据处理模块,可以看做是数据过滤器。数据进去后出来变得更加有用。
  • 我们使用两个Dense层,他们是密集链接(全连接)的神经层。第二层(也是最后一层)是一个10路的softmax层,它将返回一个由10 个概率值(总和为1)组成的数组。(每个概率值表示当前数字图像属于10个数字类别中某一个的概率)
    【拓展:】【 1. Dense layer 就是常提到和用到的全连接层 。Dense 实现的操作为:output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias=True 时才有用)。
  1. Keras定义网络层的基本方法,其代码如下:
keras.layers.Dense(units, // 该层有几个神经元
				  activation=None, // 该层使用的激活函数
				  use_bias=True, // 是否添加偏置项
				  kernel_initializer='glorot_uniform', //权重初始化方法
				  bias_initializer='zeros',// 偏置值初始化方法
				  kernel_regularizer=None, //权重规范化函数
				  bias_regularizer=None, //偏置值规范化方法
			      activity_regularizer=None, //输出的规范化方法
				  kernel_constraint=None, //权重变化限制函数
				  bias_constraint=None)//偏置值变化限制函数

3). 举个例子

keras.layers.Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True)

dense层的基础讲解
深度Dense的讲解
4).softmax函数

4)编译步骤

1. 编译步骤中的三个重要参数

  • 损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
  • 优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
  • 在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所占的比例。
    2. 编译步骤
network.compile(optimizer='rmsprop',//compile:自定义生成的函数,optimizer:即我觉得是优化器。以后知道了来改改
                  loss='categorical_crossentropy',//设置损失函数
                  metrics=['accuracy'])//监控指标

【拓展】【关于优化器的,样例使用了rmsprop,具体介绍一下rmsprop优化器

5)准备图像数据
  1. 步骤说明:在开始训练之前,我们将对数据进行预处理,将其变换为网络要求的形状,并缩放到所有值都在 [0, 1] 区间。
    2.例子: 比如之前训练图像保存在一个 uint8 类型的数组中,其形状为(60000, 28, 28),取值区间为 [0, 255]。我们需要将其变换为一个 float32 数组,其形状为 (60000, 28 * 28),取值范围为 0~1。
train_images = train_images.reshape((60000, 28 * 28))//初始的大小
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255
6)准备标签
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

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

>>> network.fit(train_images, train_labels, epochs=5, batch_size=128)
Epoch 1/5
60000/60000 [=============================] - 9s - loss: 0.2524 - acc: 0.9273 
Epoch 2/5
51328/60000 [=======================>.....] - ETA: 1s - loss: 0.1035 - acc: 0.9692
  1. 训练过程中显示了两个数字:一个是网络在训练数据上的损失(loss),另一个是网络在训练数据上的精度(acc)。来检查一下模型在测试集上的性能。
>>> test_loss, test_acc = network.evaluate(test_images, test_labels)
>>> print('test_acc:', test_acc)
test_acc: 0.9785

【拓展】测试集精度为 97.8%,比训练集精度低不少。训练精度和测试精度之间的这种差距是过拟合(overfit)造成的。过拟合是指机器学习模型在新数据上的性能往往比在训练数据上要差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值