【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 ...
随机推荐
- 关于bat/cmd中转义符的使用
今天笔者在cmd中准备使用echo 输出<https://www.cnblogs.com/5201351> 发现直接就报错:命令语法不正确. 然后就想到可能是<和>在cmd中有 ...
- dubbo学习(十)spring boot整合dubbo
工程搭建与配置 生产者 1.创建一个生产者的spring boot工程,配置好依赖,并把接口实现类文件夹复制到新的工程里 2.pom.xml配置dubbo的相关依赖 <!-- Dubbo Spr ...
- JS实现简单的多选选项的全选反选按钮
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <!-- 5 需求: 6 1.写三个按钮: ...
- 需要完成PAT作业和微博作业的具体方法
http://www.cnblogs.com/c-programing-language/p/6703508.html
- Apollo系列(二):Apollo在ASP.NET Core 3.1中使用
关于Apollo怎么安装,我就不介绍,可以看这篇文章:https://www.cnblogs.com/vic-tory/p/13736192.html 一.Apollo使用: 1.创建项目 2.添加配 ...
- 理解vue与MVVM三要素
MVVM到底是什么,跟Jquery有什么区别? MVVM理解,跟MVC区别 Model View Controller,一般是用户操作view视图按钮,触发controller内方法,cotrolle ...
- vue-cli4.x+部署vue2.x开发环境 引入iview
1.首先当然是安装nodejs,因为这边我已经装过了 所以就不再安装了 直接下一步下一步完成安装. 2.get~安装完成后先测试一下是否在本地已经安装成功了,能出现下面这两个提示就说明安装已经成功了 ...
- C# Redis分布式锁(RedLock) - 多节点
Redis单节点的分布式锁只需要注意三点就可以了: 1.加锁并设置锁的过期时间必须是原子操作; 2.锁的value值必须要有唯一性; 3.释放锁的时候要验证其value值,不是自己加的锁不能释放. 但 ...
- 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...
- 01 百度 AI Studio 基础操作记录(一) Notebook
转载参考: AI Studio基本操作(一) Notebook篇 一.基础 1.新建文件: 可以使用命令, !cat <<newfile > newfile.py 在项目空间内直接创 ...