tensorflow读取tfrecords格式文件

dataset基本原理:


1.写入tfrecords文件:

|图片|文字 ->格式转换->example(tf.train.Example)生成 ->write(tf.python_io.TFRecordWriter.write)

2.读取tfrecords文件:

tf.data.dataset加载文件序列 ->dataset(example迭代器) -> tf.parse_single_sample(逐个解析example)

##代码实现:

to dataset:

      dataset_b = tf.data.Dataset.list_files(files).shuffle(len(files))

        dataset = dataset_b.apply(tf.contrib.data.parallel_interleave(\

            tf.data.TFRecordDataset, cycle_length= num_threads))

        dataset = dataset.map(decode_ex, num_parallel_calls=num_threads)

        shapes = dataset._output_shapes

        logging.info('dataset decode shapes', shapes)

        dataset = dataset.shuffle(buffer_size=buffer_size)

        #pipline

        dataset = dataset.prefetch(num_prefetch_batches * batch_size)

        #pad

        dataset = dataset.padded_batch(batch_size, padded_shapes=(shapes))


###parse sigle example:

    features_dict= {'id':tf.FixedLenFeature([], tf.string),\                                                                             

        'classes': tf.FixedLenFeature([NUM_CLASSES], tf.float32),\

        'comment': tf.VarLenFeature(tf.int64),\

        'title': tf.VarLenFeature(tf.int64),\

        'comment_str': tf.FixedLenFeature([], tf.string),\

        'title_str': tf.FixedLenFeature([], tf.string)

        }

    features = tf.parse_single_example(example, features = features_dict)

    id = features['id']

    classes = features['classes']

    comment = None

    comment = features['comment']

    comment = tf.sparse_tensor_to_dense(comment)

    comment = comment[:500]

    #parser comment

    comment_str = features['comment_str']

    #comment_str= comment_str[:500]

    #parser title

    title = None

    title = features['title']

参考教程:

https://www.yanshuo.me/p/305699(part6:如何使用 TensorFlow Eager 从 TFRecords 批量读取数据)

https://www.tensorflow.org/performance/datasets_performance(dataset的官方教程)

https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/utils/data_reader.py(港科大的datareader代码)

##tensorflow并行数据抽取与预测

###1.基本知识

####cpu与gpu的分工:

layer是运行在gpu/tpu上的。也就是说,embedding_layer转化是在gpu上进行,但是prepare即word->id,是在cpu上进行的。parser_example是在cpu上;

####model训练性能比较:

TPU>GPU>CPU

TPU是google专门针对tensorflow开发的处理器,降低功耗,加大运算速率。alphago就是在TPU处理器上搭建的。

####加快cpu的预处理速度的方法

cpu做的工作有两个:1. 抽取(I/O)2.数据解析(map(parser)),故而,加快cpu预处理的速率的方法,有两个:

##1. 并行抽取;

##2.map方法并行

cpu与gpu结合的过程,还可以进行一步管道优化:也就是在batch的过程中,cpu的prepare与gpu的训练同时进行。

2.优化方法具体介绍

#一. batch流水线pipline

##原理流程图:


##代码实现:

    dataset = dataset.batch(batch_size=FLAGS.batch_size) 

    dataset = dataset.prefetch(buffer_size=FLAGS.prefetch_buffer_size) 

--------------------------------------------------------

##二.并行prepare(map):

##原理流程图:


##代码实现:

---------------------------------------------

    dataset = dataset.map(map_func=parse_fn, num_parallel_calls=FLAGS.num_parallel_calls) 

    dataset = dataset.batch(batch_size=FLAGS.batch_size) 

------------------------------------------------

#三.并行数据抽取

##原理流程图:


##代码实现:

------------------------

    改代码:

    dataset = files.interleave(tf.data.TFRecordDataset) 

    为: 

    dataset = files.apply(tf.contrib.data.parallel_interleave(

        tf.data.TFRecordDataset, cycle_length=FLAGS.num_parallel_readers))


3.参考教程:

https://www.tensorflow.org/performance/datasets_performance

https://tensorflow.juejin.im/performance/datasets_performance.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容