【tensorflow】TFRecord读写机理

  1. tfrecord,写的时候是一行一行地写的,读的时候是每batch个行地读的。

  2. 写的时候,通过for循环(例如:img_path, cls_label = img_paths[i], cls_labels[I])往tf.train.Example里面喂feature。
    因此,tf.train.Example中的feature喂入的是单行的数据(包括一个img_path、及其对应的encode_img、cls_label、pts_label)。

    example = tf.train.Example(features=tf.train.Features(feature={
        'img_path': _bytes_feature(img_path),
        'encoded': _bytes_feature(image_buffer),
        'cls_label': _int64_feature(cls_label)
    }))
    

    可以通过 print(example)查看。

  3. 最后的数据会在tfrecord中形成一个二维list:

    [ { [img_path], [img_encode], [cls_label], [pts_label] }
      { [img_path], [img_encode], [cls_label], [pts_label] }
      { [img_path], [img_encode], [cls_label], [pts_label] }
      { [img_path], [img_encode], [cls_label], [pts_label] }
                                                 … …
      { [img_path], [img_encode], [cls_label], [pts_label] } ]
    

    list中每行,都是一个完整的数据element,element = { [img_path], [img_encode], [cls_label], [pts_label] }

  4. 具体地,element = { [b’\path\to\img_1.jpg’], [\df\sdf\df\df\dfsxc\d], [1], [21.2, 34.6, 45.1, 56.7] }

  5. element中的每一个单项都是 type list,所以写入 _int64_feature、_float_feature、_bytes_feature 时,一定是一个 一维list !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值