tensorflow-- Dataset创建数据集对象
tf.data模块包含:
- experimental 模块
- Dataset 类
- FixedLengthRecordDataset 类
- TFRecordDataset 类
- TextLineDataset 类
# author by FH.
# OverView:
# tf.data
# experimental ---Modules
# Dataset ---class
# FixedLengthRecordDataset ---class
# TFRecordDataset ---class
# TextLineDataset ---class
import tensorflow as tf
import numpy as np # 1. 使用静态方法 tf.data.Dataset.from_tensor_slices
# 将输入的第一个维度切割,形成dataset
# 2. 使用 Dataset的 make_one_shot_iterator() 实例化一个 iterator
# 这个iterator 只能从头到尾读取一次。“one shot iterator”
def test1():
sess = tf.Session()
dataset1 = tf.data.Dataset.from_tensor_slices(np.array([1.0,2.0,3.0,4.0,5.0]))
dataset2 = tf.data.Dataset.from_tensor_slices(np.array([[1,2],[3,4],[0,9]]))
dataset3 = tf.data.Dataset.from_tensor_slices(
{
"a":np.array([1.0,2,3,4,5.0]),
"b":np.random.uniform(size=(5,2))
}
)
# 使用 Dataset的 make_one_shot_iterator() 实例化一个 iterator
# 这个iterator 只能从头到尾读取一次。“one shot iterator”
oneShotIterator1 = dataset1.make_one_shot_iterator()
oneShotIterator2 = dataset2.make_one_shot_iterator()
oneShotIterator3 = dataset3.make_one_shot_iterator()
element1 = oneShotIterator1.get_next()
element2 = oneShotIterator2.get_next()
element3 = oneShotIterator3.get_next()
for i in range(5):
print(sess.run(element1))
for i in range(3):
print(sess.run(element2))
for i in range(5):
print(sess.run(element3))
sess.close() # 1.Dataset 中的数据元素转换。
# map() :参数为一个函数,将dataset中的每个元素带入获取新的值
# batch(): 参数为一个整数,将多个元素组合成一个batch
def test2():
sess = tf.Session()
dataset = tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0, 3.0, 4.0, 5.0,6]))
# map() 重新映射新的元素值
dataset1 = dataset.map(lambda x: x * 3)
# batch() 2个组成一个batch, 组成batch 之后size 为3
dataset2 = dataset.batch(2)
# shuffle() 打乱dataset
dataset3 = dataset.shuffle(buffer_size=3)
# repeat() 将整个序列重复多次,重复4次 size 为24
dataset4 = dataset.repeat(4) oneShotIterator1 = dataset1.make_one_shot_iterator()
oneShotIterator2 = dataset2.make_one_shot_iterator()
oneShotIterator3 = dataset3.make_one_shot_iterator()
oneShotIterator4 = dataset4.make_one_shot_iterator()
element1 = oneShotIterator1.get_next()
element2 = oneShotIterator2.get_next()
element3 = oneShotIterator3.get_next()
element4 = oneShotIterator4.get_next()
for i in range(6): # map()
print(sess.run(element1))
for i in range(3): # batch()
print(sess.run(element2))
for i in range(6): # shuffle()
print(sess.run(element3))
for i in range(24): # repeat()
print(sess.run(element4))
sess.close() # example1: 读取图片和相应的标签并打乱,组成
# batch_size=2 的数据集,重复10 epoch
def _parse_function(imgfilename,label):
image_value = tf.read_file(imgfilename)
img = tf.image.decode_image(image_value)
img = tf.image.resize_images(img,[256,256])
return img,label
def example1():
# 图片列表
filesnames = tf.constant(['name1.jpg','name3.jpg','name5.jpg','name6.jpg','name7.jpg','name8.jpg'])
# 对应标签
labels = tf.constant([0,1,0,1,1,0])
# dataset (名称,标签)
dataset = tf.data.Dataset.from_tensor_slices((filesnames,labels))
# map 映射成图片和标签
dataset = dataset.map(_parse_function)
# shuffle ,batch , repeat
dataset = dataset.shuffle(buffersize=3).batch(2).repeat(10)
return dataset if __name__ == '__main__':
test2()
tensorflow-- Dataset创建数据集对象的更多相关文章
- 022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系
protected void Page_Load(object sender, EventArgs e) { string connectionString = "server=.;data ...
- DataSet与DataTable对象
DataSet与DataTable对象 摘自:http://www.cnblogs.com/fttbfttb/articles/1509662.html DataSet对象 DataSet是ADO.N ...
- 一个简单的TensorFlow可视化MNIST数据集识别程序
下面是TensorFlow可视化MNIST数据集识别程序,可视化内容是,TensorFlow计算图,表(loss, 直方图, 标准差(stddev)) # -*- coding: utf-8 -*- ...
- R语言实战读书笔记2—创建数据集(上)
第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...
- DataSnap数据库连接池,数据集对象池的应用
传统的应用服务器的开发往往是在ServerMethods单元中拖放一堆TDataSet, TDaTaSetProvider控件,这是一个最简单粗暴的开发方向,往往会造成服务端程序文件的臃肿.服务运行期 ...
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)
一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...
- SSAS系列——【03】多维数据(多维数据集对象)
原文:SSAS系列--[03]多维数据(多维数据集对象) 1.什么是Cube? 简单 Cube 对象由基本信息.维度和度量值组组成. 基本信息包括多维数据集的名称.多维数据集的默认度量值.数据源和存储 ...
- 第一课 导入库 - 创建数据集 - CSV读取 - 导出 - 查找最大值 - 绘制数据
第1课 创建数据 - 我们从创建自己的数据集开始分析.这可以防止阅读本教程的最终用户为得到下面的结果而不得不下载许多文件.我们将把这个数据集导出到一个文本文件中,这样您就可以获得从文本文件中一些拉取数 ...
- 创建javaScript对象的方法
一.工厂模式 function person (name,age) { var p=new Object(); p.name=name; p.age=age; p.showMessage=functi ...
随机推荐
- 【Ubuntu 16.04.2_64】安装配置SVN
[Ubuntu 16.04.2_64]安装配置SVN 转载:https://www.cnblogs.com/yangchongxing/p/10190549.html 检查是否已安装svn # svn ...
- 5分钟搞清楚Synchronized和Lock的概念与区别
前言 并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock. Synchronized 和 Lock的概念 Synchronized 是Java 并 ...
- 多个datasource的配置与实现原理
一般情况下,一个项目中只会有一个datasource,但是在某些情况.或者业务需求的情况下会出现一个项目有多个datasource的情况,当满足一定条件的时候,对数据库的操作就会从一个一个 ...
- c#截取后台窗口的图片
c#截取后台窗口的图片,自测可用,据说性能很一般,用用吧 struct RECT { public int Left; // x position of upper-left corner publi ...
- Maven pom.xml 全配置(二)不常用配置
Maven pom.xml 全配置(二)不常用配置 这里贴出Maven pom.xml文件中使用率较少的配置参数,如果此篇文档中没有找到你想要的参数,移步Maven pom.xml 全配置(一)常用配 ...
- 阿里云服务器部署Tornado应用
本篇详细介绍tornado应用部署到阿里云服务器上的全过程. Tornado程序地址:github https://github.com/ddong8/ihasy.git 准备工作:阿里云服务器Cen ...
- LAMPSecurity: CTF6 Vulnhub Walkthrough
镜像下载地址: https://www.vulnhub.com/entry/lampsecurity-ctf6,85/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202 ...
- 初学Manjaro
近期,看有朋友在使用Manjaro系统,感觉这个系统挺不错,于是我也安装了Manjaro,学习一下!!!! Manjaro下载地址:https://manjaro.org/download/ Manj ...
- 做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?
Java8 有一些新的特性,今天老顾给大家分享一下关于 Lambda 表达式的由来,一开始感觉 Lambda 可读性蛮差的,不知道 为什么 Java8 会出来这个表达式?既然大佬们推出来,肯定是有原因 ...
- SAP-BP 创建客商(摘抄)
FORM frm_bp02 . * 更改供应商所需变量 DATA:l_xfeld TYPE xfeld, "复选框 ls_data TYPE vmds_ei_main, "供应商总 ...