• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

keras学习 0x07-Tfrecord 读取

Keras admin 2个月前 (09-09) 258次浏览 0个评论 扫描二维码

很久没更新了,都已经忘记的差不多了,说实话是自己偷懒了,最近一段时间周末其实也是有时间来更新的。

上一篇文章写的还是怎么生成 tfrecord,这次准备从 tfrecord 中读数据。

读写的方式可以使用 tf.data 或者使用 python io 方法来读取,不过建议还是使用 tf.data 来实现数据的读写。

import tensorflow as tf

def parse_example(example_proto):
    feature_key_value_pair = {
        'clothes_category': tf.FixedLenFeature([1],dtype=tf.int64),
        'clothes_prices': tf.FixedLenFeature([1],dtype=tf.float32),
        'clothes_name': tf.FixedLenFeature([], dtype=tf.string),
        'clothes_topic': tf.VarLenFeature(dtype=tf.float32)
    }
    return tf.parse_single_example(example_proto, feature_key_value_pair)
filenames = ['./resources/clothes.tfrecord']
raw_dataset = tf.data.TFRecordDataset(filenames)
dataset=raw_dataset.map(parse_example)
iter_data=dataset.make_one_shot_iterator()
next_example=iter_data.get_next()
with tf.Session() as sess:
    try:
        while True:
            data_record = sess.run(next_example)
            print(data_record)
    except:
        pass

上面给出了一段使用 tf.data 读取 tfrecord 的示例代码,生成 tfrecord 的方法是使用上一节使用的方法来tfrecord 生成

由于是从 tfrecord 中读取数据,所以是使用 TFRecordDataset 方法从文件中读取数据,由于数据是序列化存储在文件中,所以在也是需要相应方法去解析出来,所以定义了 parse_example 用来解析序列化数据,map 依次对 tfrecord 中存储的每一记录使用 parse_example 方法去解析,make_one_shot_iterator 是构建迭代器,用于迭代样本。

make_one_shot_iterator 这个方法只遍历数据一遍,并非循环迭代。关于 tf.data 中迭代器的使用包含四种迭代器,这个在下一篇文章会介绍,这里暂时先不说了。

iter_data.get_next() 操作会在执行时生成 Dataset 的下一个元素,并且此操作通常充当输入管道代码和模型之间的接口。

后续就是构建 session 会话,不断的打印数据,打印的结果如下所示:

{'clothes_topic': SparseTensorValue(indices=array([[0],
       [1],
       [2]]), values=array([110., 120.,  78.], dtype=float32), dense_shape=array([3])), 'clothes_category': array([10]), 'clothes_name': b'jack jones', 'clothes_prices': array([100.6], dtype=float32)}
{'clothes_topic': SparseTensorValue(indices=array([[0],
       [1],
       [2],
       [3]]), values=array([ 89., 130.,  87., 522.], dtype=float32), dense_shape=array([4])), 'clothes_category': array([11]), 'clothes_name': b'cat', 'clothes_prices': array([101.6], dtype=float32)}

 

 

 

 


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明keras 学习 0x07-Tfrecord 读取
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!