【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 ...
随机推荐
- Java List 常用集合 ArrayList、LinkedList、Vector
Java 中的 List 是非常常用的数据类型.List 是有序的 Collection,Java List 一共有三个实现类,分别是:ArrayList.Vector.LinkedList 本文分析 ...
- linux学习(九)Linux知识点汇总
一.基础概念 Q:linux是什么? Linux是一种基于UNIX的操作系统,它基于Linux内核,常被用作服务器的操作系统. Q:UNIX和LINUX有什么区别? Unix:收费的,商用的,拥有许 ...
- Spring循环依赖的三种方式
引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错.下面说一下Spring是如果解决循环依赖的. 第一 ...
- 你想要的Java资料这里都有!!!
你想要的Java资料这里都有!!! [复制链接] 1.资源标题:程序员的SQL金典(完整) 资源地址:http://down.51cto.com/data/2207566 2.资源标题: ...
- linux循环定时任务
crond定时任务 centos # 重启服务 service crond restart ----------------------------------------- chkconfig cr ...
- 海量数据分库分表方案(二)技术选型与sharding-jdbc实现
上一章已经讲述分库分表算法选型,本章主要讲述分库分表技术选型 文中关联上一章,若下文出现提及其时,可以点击 分库分表算法方案与技术选型(一) 主要讲述 框架比较 sharding-jdbc.zdal ...
- Unicode、UTF8、GB2312、ANSI
来源:https://blog.csdn.net/osanwenyu/article/details/48439461 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...
- getopt函数用法
getopt被用来解析命令行选项参数. #include <unistd.h> extern char *optarg; //选项的参数指针 extern int o ...
- [POI2010]PIL-Pilots 单调队列
[POI2010]PIL-Pilots 题意: 给定一个序列和一个数值k,求一段连续最大区间是的最大值与最小值之差小于k: 思路: 因为要维护最大值和最小值并且连续,使用两个单调队列分别同时维护最大最 ...
- Java学习之动态代理篇
Java学习之动态代理篇 0x00 前言 在后面的漏洞研究的学习中,必须要会的几个知识点.反射机制和动态代理机制.至于反射的前面已经讲到过了,这里就不做更多的赘述了. 0x01 动态代理 这里先来讲一 ...