tensorflow随笔-reader(3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010255642/article/details/82756050

num_work_units_completed

num_work_units_completed(name=None)

返回此阅读器已完成处理的工作单元数。

参数:

name:操作的名称(可选)。
返回:

一个int64张量。

read

read(
    queue,
    name=None
)

返回阅读器生成的下一个record (key, value)(记录(键,值))对。

如果需要,将工作单元从队列中取出(例如,当读取器需要从一个新文件开始读取,因为它已经完成了前一个文件)。

参数:

queue: 表示队列句柄的队列或可变字符串张量,带有字符串工作项。
name: 操作的名称(可选)。

返回:

张量元组 (key, value)。*key:一个字符串标量张量。*key:一个字符串标量张量。

read_up_to

read_up_to(
    queue,
    num_records,
    name=None
)

返回由阅读器生成的num_records (key, value)对。

如果需要,将工作单元从队列中取出(例如,当读取器需要从一个新文件开始读取时,因为它已经完成了前一个文件)。甚至在最后一批之前,它可能返回小于num_records的结果。

参数:

queue:表示队列句柄的队列或可变字符串张量,带有字符串工作项。
num_records:要读取的记录数量。

name: 操作的名称(可选)。
返回:

张量元组 (key, value)。*key:一个字符串标量张量。*key:一个字符串标量张量。

reset

reset(name=None)

将阅读器恢复到初始的清洁状态。

参数:

name:操作的名称(可选)。
返回:

创建操作。

restore_state

restore_state(
    state,
    name=None
)

将读取器恢复到先前保存的状态。

并不是所有的阅读器都支持被还原,因此这会产生一个未实现的错误。

参数:

state:字符串张量。匹配类型的阅读器的序列化状态的结果。
name:操作的名称(可选)。
返回:

创建操作。

serialize_state

serialize_state(name=None)

生成一个字符串张量来编码读取器的状态。

并不是所有的阅读器都支持序列化,因此这会产生未实现的错误。

参数:

name:操作的名称(可选)。
返回:
一个字符串张量。

tf.decode_csv

tf.decode_csv(
    records,
    record_defaults,
    field_delim=',',
    use_quote_delim=True,
    name=None,
    na_value='',
    select_cols=None
)

将CSV记录转换为张量。每一列映射到一个张量。

rfc4180格式预计用于CSV记录。(https://tools.ietf.org/html/rfc4180)注意,我们允许使用int或float字段来引导和跟踪空格。

参数:

records:字符串类型的张量。每个字符串都是csv中的记录/行,所有记录都应该具有相同的格式。

record_defaults:具有特定类型的张量对象的列表。可接受的类型有float32、float64、int32、int64、string。输入记录的每列有一个张量,该列的默认值为标量,如果需要该列,则为空。
field_delim: 可选字符串。默认为“,”。用于分隔记录中的字段的char分隔符。

use_quote_delim:可选bool。默认值为True。如果为false,则将双引号作为字符串字段内的正则字符

name:操作的名称(可选)。
na_value:要识别为NA/NaN的附加字符串。

select_cols:要选择的列索引的可选排序列表。如果指定,则只解析和返回这个列子集。
返回:

张量对象的列表。具有与record_defaults相同的类型。每个张量的形状都和记录中的一样。
抛出:

ValueError:如果任何参数格式错误。

tf.train.shuffle_batch

 

tf.train.shuffle_batch(
    tensors,
    batch_size,
    capacity,
    min_after_dequeue,
    num_threads=1,
    seed=None,
    enqueue_many=False,
    shapes=None,
    allow_smaller_final_batch=False,
    shared_name=None,
    name=None
)

此函数向当前计算图添加以下内容:

将张量中的张量放入队列中的一种变换队列。

dequeue_many操作从队列中创建批次。

一个QueueRunner到QUEUE_RUNNER集合,将张量从张量中加入队列。

如果enqueue_many为False,则假定张量代表一个示例。一个形状为[x, y, z]的输入张量将作为一个形状为[batch_size, x, y, z]的张量输出。

如果enqueue_many为真,则假定张量代表一组示例,其中第一个维度通过示例索引,并且张量的所有成员在第一个维度中的大小应该相同。如果输入张量的形状是[*,x, y, z],输出的形状是[batch_size, x, y, z]。

容量capacity参数控制允许预取队列增长的长度。

返回的操作是一个出队列操作,如果输入队列耗尽并将抛出tf.errors.OutOfRangeError 。

如果该操作正在为另一个输入队列提供数据,其队列运行器将捕获此异常,但是,如果在主线程中使用此操作,则您自己负责捕获此异常。

# Creates batches of 32 images and 32 labels.
image_batch, label_batch = tf.train.shuffle_batch(
      [single_image, single_label],
      batch_size=32,
      num_threads=4,
      capacity=50000,
      min_after_dequeue=10000)

tf.stack()

通过沿轴维数的排列,将张量列表中的值打包成一个维度比每个张量的值高1的张量。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 18 20:19:40 2018

@author: myhaspl
@email:[email protected]
"""

import tensorflow as tf
x = tf.constant([1, 4])
y = tf.constant([2, 5])
z = tf.constant([3, 6])
res1=tf.stack([x, y, z], axis=1)  
res2=tf.stack([x, y, z], axis=0) 
with tf.Session() as sess:
    print sess.run(res1)
    print sess.run(res2)
[[1 2 3]
 [4 5 6]]
[[1 4]
 [2 5]
 [3 6]]

转置

x = tf.constant([[1, 2, 3], [4, 5, 6]])
tf.transpose(x)  # [[1, 4]
                 #  [2, 5]
                 #  [3, 6]]

读文件代码:

    #生成文件名队列
    fileName=os.getcwd()+"/1.csv"
    fileNameQueue=tf.train.string_input_producer([fileName])
    #生成记录键值对
    reader=tf.TextLineReader(skip_header_lines=1)
    key,value=reader.read(fileNameQueue)
    recordDefaults=[[""],[0],[0]]
    decoded=tf.decode_csv(value,record_defaults=recordDefaults)
    name,age,source=tf.train.shuffle_batch(decoded,batch_size=1,capacity=2,min_after_dequeue=1)    
    features=tf.transpose(tf.stack([age,source]))

猜你喜欢

转载自blog.csdn.net/u010255642/article/details/82756050
今日推荐