【2】TensorFlow光速入门-数据预处理(得到数据集)
本文地址:https://www.cnblogs.com/tujia/p/13862351.html
系列文章:
【1】TensorFlow光速入门-tensorflow开发基本流程
【2】TensorFlow光速入门-数据预处理(得到数据集)
【4】TensorFlow光速入门-保存模型及加载模型并使用
【6】TensorFlow光速入门-python模型转换为tfjs模型并使用
一、数据来源
数据来源可以是自己业务原有数据或下载的开源数据或爬虫捉取的第三方数据,需要训练怎样的模型的准备什么样的数据。
例如:图片分类就需要自己准备不同分类的图片,按分类命名文件夹(这样方便读取)
二、导入数据(省时间可以直接跳过,看第三步就好)
1)准备数据
已经下载好,分类保存好图片,我们先要导入到开发环境里,如果你图片已经准备好,那就可以跳过这一步了
这是我要做的一个表非表的二分类模型的数据:

我把它打包为 wnw.zip,然后放在本地的web环境根目录下

2)导入数据
打开 jupyter 的终端

注:也可以用 jupyter 里的界面来操作创建目录或上传文件,不过解压还是得用终端。使用其他方法上传图片也行,条条道路通罗马,只要把数据上传到可读取目录里就行
三、数据预处理
下面以图片分类为例子,看一下怎么预处理数据
注:需要说明的是,不同模型需要的输入数据是不一样的,这里主要学习数据的读取和处理方法,其他模型自己举一反三就好
1)首先先导入需要用到的包
import pathlib
import random
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
2)读取文件夹图片数据
data_path = '/tf/datasets/wnw'
all_image_paths = []
all_image_labels = []
label_names = []
data_root = pathlib.Path(data_path)
i = 0
for item in data_root.iterdir():
label_names.append(item.name)
for image in item.iterdir():
all_image_paths.append(str(image))
all_image_labels.append(i)
i = i + 1
print(label_names)
print(len(all_image_paths))
print(len(all_image_labels))
运行结果:

3)图片数据集
处理图片数据成tensor(张量)数据
def load_and_preprocess_image(path):
# 文件 转 tensor
image = tf.io.read_file(path)
# 普通 tensor 转 图片tensor,channels 为颜色通道,1表示灰图
image = tf.image.decode_jpeg(image, channels=1)
# 缩放图片尺寸为 100*100
image = tf.image.resize(image, [100, 100])
# 颜色的数值范围是0-255,所以 image/255,进一步将图片tensor数据数值范围缩到 0-1
image /= 255
return image
# 图片路径列表直接转数据集
path_ds = tf.data.Dataset.from_tensor_slices(all_image_paths)
# 把路径数据转成图片tensor数据
image_ds = path_ds.map(load_and_preprocess_image, num_parallel_calls=tf.data.experimental.AUTOTUNE)
4)label 数据集
label_ds = tf.data.Dataset.from_tensor_slices(tf.cast(all_image_labels, tf.int64))
5)将图片数据集和标签数据集压缩打包一下
image_label_ds = tf.data.Dataset.zip((image_ds, label_ds))
6)打乱数据
image_count = len(all_image_paths)
ds = image_label_ds.shuffle(buffer_size=image_count)
ds = ds.repeat()
ds = ds.batch(32)
ds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
print(ds)
注:为了文章更易读,我省略了一些查看图片、数据验证的操作,详细教程可以看这里:https://tensorflow.google.cn/tutorials/load_data/images
重点 Api :
tf.io.read_file https://tensorflow.google.cn/api_docs/python/tf/io/read_file
tf.image.decode_image https://tensorflow.google.cn/api_docs/python/tf/io/decode_jpeg
tf.image.resize https://tensorflow.google.cn/api_docs/python/tf/image/resize
tf.data.Dataset.from_tensor_slices https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#from_tensor_slices
tf.data.Dataset.map https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#map
tf.data.Dataset.zip https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#zip
下一节,我们来说说,如果用这个准备好的数据集来训练及评估其准确性
本文链接:https://www.cnblogs.com/tujia/p/13862351.html
完。
【2】TensorFlow光速入门-数据预处理(得到数据集)的更多相关文章
- 【6】TensorFlow光速入门-python模型转换为tfjs模型并使用
本文地址:https://www.cnblogs.com/tujia/p/13862365.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- 【0】TensorFlow光速入门-序
本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...
- 【1】TensorFlow光速入门-tensorflow开发基本流程
本文地址:https://www.cnblogs.com/tujia/p/13862339.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- 【3】TensorFlow光速入门-训练及评估
本文地址:https://www.cnblogs.com/tujia/p/13862357.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- 【4】TensorFlow光速入门-保存模型及加载模型并使用
本文地址:https://www.cnblogs.com/tujia/p/13862360.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- 【5】TensorFlow光速入门-图片分类完整代码
本文地址:https://www.cnblogs.com/tujia/p/13862364.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...
- 『TensorFlow』TFR数据预处理探究以及框架搭建
一.TFRecord文件书写效率对比(单线程和多线程对比) 1.准备工作 # Author : Hellcat # Time : 18-1-15 ''' import os os.environ[&q ...
- TensorFlow从1到2(三)数据预处理和卷积神经网络
数据集及预处理 从这个例子开始,相当比例的代码都来自于官方新版文档的示例.开始的几个还好,但随后的程序都将需要大量的算力支持.Google Colab是一个非常棒的云端实验室,提供含有TPU/GPU支 ...
- 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理
Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...
随机推荐
- gcc g++ 安装与配置 入门详解 - 精简归纳
gcc g++ 安装与配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 gcc g++ 安装与配置 入门详解 - 精简归纳 一.下载MinGW ...
- 2020 CiGA Game Jam活动总结
CiGA Game Jam 总结 今年8月14.15.16号,48小时游戏开发--Game Jam开始了.蠢新第一次参加Game Jam,今年还是线上开展,情绪复杂= = 还有一个坏消息,晓航旅游缺席 ...
- Solon详解(八)- Solon的缓存框架使用和定制
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Gitlab集成Sonarqube自动检测代码并发送报告给提交者
使用gitlab-ci.sonarqube.sonar-scanner 实现如下功能 1.一旦提交代码就进行代码质量检测 2. 发送检测报告邮件给提交者 先来看下最终结果,邮件中有检测报告,具体bug ...
- Python-SyntaxError: invalid syntax
Error: SyntaxError: invalid syntax Where? 运行Python代码时候,提示错误 Way? Python def class if elif for while ...
- Python-统计序列中元素
问题1: 随机数列[12,5,8,7,8,9,4,8,5,...] 中出现次数最高的3个元素,他们出现的次数 问题2: 对某英文文章的单词,进行词频统计,找出出现次数最搞得10个单词,他们出现的次数是 ...
- c++ 中预编译头文件名 pch.h
转载:https://www.it-swarm.asia/zh/c++/%e6%88%91%e5%8f%af%e4%bb%a5%e4%bd%bf%e7%94%a8includepchh%e2%80%9 ...
- 给Python IDLE添加行号显示
转载:https://blog.csdn.net/howard2005/article/details/104112297 文章目录一.引出问题1.Spyder编辑Python程序能显示行号2.Pyt ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...
- Solon集成(02)- 轻松吃下小馒头 Dubbo
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...