《Python深度学习》第二章笔记

本文是《Python深度学习》第二章的笔记,主要讲解了神经网络的基础,包括使用Keras构建手写数字分类的神经网络示例,张量的概念及其运算,如逐元素运算、广播和张量点积,以及神经网络如何通过反向传播和梯度下降进行学习。
摘要由CSDN通过智能技术生成

1.第一个神经网络示例

我们来看一个具体的神经网络示例,使用Python的Keras库来学习手写数字分类

这里要解决的问题是,将手写数字的灰度图像(28像素x28像素)划分到10个类别中(0~9)。我们将使用MNIST数据集(MNIST数据集预先加载在Keras库中,包括4个Numpy数组),它是机器学习领域的一个经典数据集,包含60000张训练图像和10000张测试图像。

接下来的工作流程如下:

  • 首先,加载Keras中的MNIST数据集,得到训练集和测试集。
  • 其次,将训练数据输入神经网络。
  • 然后,网络学习将数据和标签(数据对应的类别)关联在一起。
  • 最后,网络对输入的测试数据生成预测,并验证这些预测值与真实值是否匹配。
#加载keras中的MNIST数据集
from keras.datasets import mnist
(train_images,train_labels),(test_images,test_labels) = mnist.load_data()
# print(train_images.shape)
# print(len(train_labels))
# print(train_labels)

本例的网络包含2个Dense层,它们是密集连接的神经层。第二层是一个10路的softmax层,它将返回一个由10个概率值(总和为1)组成的数组。每个概率值表示当前数字图像属于10个数字类别中某一个的概率。

Dense层完成的具体操作后续会介绍到。

#搭建网络架构
from keras import models
from keras import layers
network = models.Sequential()
#该网络包含2个Dense层(全连接层)
network.add(layers.Dense(512,activation='relu',input_shape=(28*28)))
network.add(layers.Dense(10,activation='softmax'))

编译时需要人为设置的三个参数:

  • 损失函数loss
  • 优化器optimizer
  • 在训练和测试过程中需要监控的指标metric

后续两章会详细解释损失函数和优化器的确切用途。

#编译
network.compile(optimizer='rmsprop',
               loss='categorical_crossentropy',
               metrics=['accuracy'])
#准备图像数据
#数据预处理,将unit8类型的图像变换为float32数组类型
#取值区间[0,255]→[0,1],形状(60000,28,28)→(60000,28*28)
train_images = train_images.reshape
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值