今日小结——20190507(kinect债见&没刷LeetCode&数据集使用学习)

一、因为无论怎么改kinect的图像调用方式都无法解决机械上的精度问题,所以项目放弃用kinect,over!!

二、Dataset使用

首先学到了通过队列进行多线程输入的方法,也就是合理利用run(),但是在平时大多数处理中,还是得用高级一些的数据处理方法,所以每一个数据来源被抽象成的那个东西就是Dataset。。。

其次要知道数据种类都有啥,主要是张量、TFRecord文件,文本文件或者经过sharding的文件,因为训练数据通常无法全部写入内存中,从数据集中读取数据时需要使用一个迭代器按顺序进行读取

从数组创建一个数据集,这里的数据集是从一个张量中构建的

input_data = [1, 2, 3, 5, 8]
dataset = tf.data.Dataset.from_tensor_slices(input_data)

定义一个迭代器用来遍历数据集

iterator = dataset.make_one_shot_iterator()
x = iterator.get_next()
y = x * x

也可以从本地的文本文件中进行构建

with open("./test1.txt", "w") as file:
    file.write("File1, line1.\n") 
    file.write("File1, line2.\n")
with open("./test2.txt", "w") as file:
    file.write("File2, line1.\n") 
    file.write("File2, line2.\n")

# 从文本文件创建数据集。这里可以提供多个文件。
input_files = ["./test1.txt", "./test2.txt"]
dataset = tf.data.TextLineDataset(input_files)

iterator = dataset.make_one_shot_iterator()

# 这里get_next()返回一个字符串类型的张量,代表文件中的一行。
x = iterator.get_next()  
with tf.Session() as sess:
    for i in range(4):
        print(sess.run(x))

还可以从TFRecord中构建数据集,利用TFRecordDataset来读取数据,与文本文件不同,每一个TFRecord都有自己的feature,所以需要提供一个parser函数来解析所读取的TFRecord格式

def parser(record):
    features = tf.parse_single_example(
        record,
        features={
            'image_raw':tf.FixedLenFeature([],tf.string),
            'pixels':tf.FixedLenFeature([],tf.int64),
            'label':tf.FixedLenFeature([],tf.int64)
        })
    decoded_images = tf.decode_raw(features['image_raw'],tf.uint8)
    retyped_images = tf.cast(decoded_images, tf.float32)
    images = tf.reshape(retyped_images, [784])
    labels = tf.cast(features['label'],tf.int32)
    #pixels = tf.cast(features['pixels'],tf.int32)
    return images, labels

# 从TFRecord文件创建数据集。这里可以提供多个文件。
input_files = ["output.tfrecords"]
dataset = tf.data.TFRecordDataset(input_files)

最后要注意的是文件路径是通过占位符函数placeholder传给数据集的,使用这种方法在实际项目中就不需要总是将参数写入计算图的定义,而可以使用程序参数的方式动态制定参数,具体还要很多itreator方法,具体碰见了还是好好看看Google的API吧。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值