本文地址:https://www.cnblogs.com/tujia/p/13862351.html

系列文章:

【0】TensorFlow光速入门-序

【1】TensorFlow光速入门-tensorflow开发基本流程

【2】TensorFlow光速入门-数据预处理(得到数据集)

【3】TensorFlow光速入门-训练及评估

【4】TensorFlow光速入门-保存模型及加载模型并使用

【5】TensorFlow光速入门-图片分类完整代码

【6】TensorFlow光速入门-python模型转换为tfjs模型并使用

【7】TensorFlow光速入门-总结

一、数据来源

数据来源可以是自己业务原有数据或下载的开源数据或爬虫捉取的第三方数据,需要训练怎样的模型的准备什么样的数据。

例如:图片分类就需要自己准备不同分类的图片,按分类命名文件夹(这样方便读取)

二、导入数据(省时间可以直接跳过,看第三步就好

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

下一节,我们来说说,如果用这个准备好的数据集来训练及评估其准确性

【3】TensorFlow光速入门-训练及评估

本文链接:https://www.cnblogs.com/tujia/p/13862351.html


完。

【2】TensorFlow光速入门-数据预处理(得到数据集)的更多相关文章

  1. 【6】TensorFlow光速入门-python模型转换为tfjs模型并使用

    本文地址:https://www.cnblogs.com/tujia/p/13862365.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  2. 【0】TensorFlow光速入门-序

    本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...

  3. 【1】TensorFlow光速入门-tensorflow开发基本流程

    本文地址:https://www.cnblogs.com/tujia/p/13862339.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  4. 【3】TensorFlow光速入门-训练及评估

    本文地址:https://www.cnblogs.com/tujia/p/13862357.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  5. 【4】TensorFlow光速入门-保存模型及加载模型并使用

    本文地址:https://www.cnblogs.com/tujia/p/13862360.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  6. 【5】TensorFlow光速入门-图片分类完整代码

    本文地址:https://www.cnblogs.com/tujia/p/13862364.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  7. 『TensorFlow』TFR数据预处理探究以及框架搭建

    一.TFRecord文件书写效率对比(单线程和多线程对比) 1.准备工作 # Author : Hellcat # Time : 18-1-15 ''' import os os.environ[&q ...

  8. TensorFlow从1到2(三)数据预处理和卷积神经网络

    数据集及预处理 从这个例子开始,相当比例的代码都来自于官方新版文档的示例.开始的几个还好,但随后的程序都将需要大量的算力支持.Google Colab是一个非常棒的云端实验室,提供含有TPU/GPU支 ...

  9. 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理

    Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...

随机推荐

  1. 面试官:一个 TCP 连接可以发多少个 HTTP 请求?

      曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式 ...

  2. Cypress系列(60)- 运行时的截图和录屏

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 背景 在测试运行时截图和录屏能够在测试错 ...

  3. Linux下安装ZooKeeper-3.5.6

    下载 官网下载地址是https://www.apache.org/dyn/closer.cgi/zookeeper,下载apache-zookeeper-3.5.6-bin.tar.gz.   sta ...

  4. 手写一个类SpringBoot的HTTP框架:几十行代码基于Netty搭建一个 HTTP Server

    本文已经收录进 : https://github.com/Snailclimb/netty-practical-tutorial (Netty 从入门到实战:手写 HTTP Server+RPC 框架 ...

  5. Flutter 开发从 0 到 1(四)ListView 下拉加载和加载更多

    在<APP 开发从 0 到 1(三)布局与 ListView>我们完成了 ListView,这篇文章将做 ListView 下拉加载和加载更多. ListView 下拉加载 Flutter ...

  6. vue的二级联动,数据是从php获取到的

    1.首先,一级要有change改变事件的关键字,v-on:change="selectarr($event)" 这是created(){}函数里面的自动调用一级分类的数据 html ...

  7. java高级&资深&专家面试题-行走江湖必备-持续更新ing

    行走江湖必备一份面试题,这里给大家整理了一套.0面试官最喜欢问的问题或者出场率较高的面试题,助校招或者社招路上的你一臂之力! 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同 ...

  8. 从源码的角度解析Mybatis的会话机制

    坐在我旁边的钟同学听说我精通Mybatis源码(我就想不通,是谁透漏了风声),就顺带问了我一个问题:在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession会话? 可能最近撸多 ...

  9. MeteoInfo脚本示例:GrADS to netCDF

    这里给出一个将GrADS数据文件转为netCDF数据文件的脚本示例程序,其它格式数据转netCDF可以参考: #-------------------------------------------- ...

  10. Flask实现websocket

    from flask import Flask,request user_socket_dict = {} app = Flask(__name__) @app.route("/conn_w ...