Python 全栈体系【四阶】(三十)

第五章 深度学习

四、Tensorflow

请添加图片描述

8. 模型保存与加载

8.1 什么是模型保存与加载

模型训练可能是一个很长的过程,如果每次执行预测之前都重新训练,会非常耗时,所以几乎所有人工智能框架都提供了模型保存与加载功能,使得模型训练完成后,可以保存到文件中,供其它程序使用或继续训练。

8.2 模型保存与加载 API

模型保存与加载通过 tf.train.Saver 对象完成,实例化对象:

  • saver = tf.train.Saver(var_list=None, max_to_keep=5) - var_list: 要保存和还原的变量,可以是一个 dict 或一个列表 - max_to_keep: 要保留的最近检查点文件的最大数量。创建新文件时,会删除较旧的文件
    (如 max_to_keep=5 表示保留 5 个检查点文件)

保存:saver.save(sess, ‘/tmp/ckpt/model’)

加载:saver.restore(sess, ‘/tmp/ckpt/model’)

8.3 案例 1:模型保存/加载

在这里插入图片描述

从执行结果可以看出,如果模型之前经过训练,直接从之前的参数值开始执行迭代,而不是从第一次给的初始值开始。

在这里插入图片描述

9. 数据读取

请添加图片描述

9.1 文件读取机制

TensorFlow 文件读取分为三个步骤:

  • 第一步:将要读取的文件放入文件名队列
  • 第二步:读取文件内容,并实行解码
  • 第三步:批处理,按照指定笔数构建成一个批次取出

在这里插入图片描述

9.2 文件读取 API
9.2.1 文件队列构造

生成一个先入先出的队列, 文件阅读器会需要它来读取数据

  • tf.train.string_input_producer(string_tensor, shuffle=True)
    • string_tensor: 含有文件名的一阶张量
    • shuffle: 是否打乱文件顺序
  • 返回:文件队列
9.2.2 文件读取
  • 文本文件读取:tf.TextLineReader
    • 读取 CSV 文件,默认按行读取
  • 二进制文件读取:tf.FixedLengthRecordReader(record_bytes)
    • 读取每个记录是固定字节的二进制文件
    • record_bytes: 每次读取的字节数
  • 通用读取方法:read(file_queue)
    • 从队列中读取指定数量(行,字节)的内容
    • 返回值:一个 tensor 元组,(文件名, value)
9.2.3 文件内容解码

解码文本文件:tf.decode_csv(records, record_defaults)

  • 将 CSV 文件内容转换为张量,与 tf.TextLineReader 搭配使用
  • 参数:
    • records: 字符串,对应文件中的一行
    • record_defaults: 类型
  • 返回:tensor 对象列表

解码二进制文件:tf.decode_raw(input_bytes, out_type)

  • 将字节转换为由数字表示的张量,与 tf.FixedLengthRecordReader 搭配使用
  • 参数:
    • input_bytes - 待转换字节
    • out_type - 输出类型
  • 返回:转换结果
9.3 案例 2:CSV 文件读取

在这里插入图片描述
在这里插入图片描述

9.4 图片文件读取 API

图像读取器:tf.WholeFileReader

  • 功能:将文件的全部内容作为值输出的 reader
  • read 方法:读取文件内容,返回文件名和文件内容

图像解码器:

  • tf.image.decode_jpeg(constants) : 解码 jpeg 格式
  • tf.image.decode_png(constants) : 解码 png 格式
  • 返回值:3-D 张量,[height, width, channels]

修改图像大小:tf.image.resize(images, size)

  • images:图片数据,3-D 或 4-D 张量
    • 3-D:[长,宽,通道]
    • 4-D:[数量, 长,宽,通道]
  • size:1-D int32 张量,[长、宽] (不需要传通道数)
9.5 案例 3:图片文件读取

在这里插入图片描述
在这里插入图片描述

10. 手写体识别

请添加图片描述

10.1 MNIST 数据集

手写数字的数据集,来自美国国家标准与技术研究所(National Institute of Standards and Technology,NIST),发布于 1998 年。

样本来自 250 个不同人的手写数字,50%高中学生,50%是人口普查局的工作人员。

数字从 0 ~ 9,图片大小是 28×28 像素,训练数据集包含 60000 个样本,测试数据集包含 10000 个样本。数据集的标签是长度为 10 的一维数组,数组中每个元素索引号表示对应数字出现的概率。

下载地址:http://yann.lecun.com/exdb/mnist/

在这里插入图片描述

10.2 任务目标

根据训练集样本进行模型训练

保存模型

加载模型,用于新的手写体数字识别

10.3 网络结构

请添加图片描述

10.4 相关 API

tf.matmul():执行矩阵乘法计算

tf.nn.softmax():softmax 激活函数

tf.reduce_sum():指定维度上求张量和

tf.train.GradientDescentOptimizer():优化器,执行梯度下降

tf.argmax():返回张量最大元素的索引值

10.5 关键代码

定义数据

在这里插入图片描述
模型搭建

在这里插入图片描述
执行训练

在这里插入图片描述
模型评估

在这里插入图片描述
模型测试
在这里插入图片描述

10.6 执行结果

在这里插入图片描述

11. 服饰识别

11.1 数据集介绍

是来自 Zalando 文章的数据集,是时尚版的 MNIST。包括 60,000 个训练集数据,10,000 个测试集数据,每个数据为 28x28 灰度图像,一共有 10 类:

0T-shirt/topT 恤
1Trouser裤子
2Pullover套衫
3Dress衣服
4Coat外套
5Sandal凉鞋
6Shirt衬衫
7Sneaker运动鞋
8Bag
9Ankle boot短靴

在这里插入图片描述

11.2 任务目标

搭建卷积神经网络模型

根据训练集样本进行模型训练

用于新的服饰图片识别

11.3 网络结构

请添加图片描述

11.4 关键代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.5 执行结果

在这里插入图片描述

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柠檬小帽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值