• 简单粗暴的tensorflowTFRecord


    # TFRecord 数据集存储格式
    import tensorflow as tf
    import os
    data_dir = 'C:/datasets/cats_vs_dogs'
    train_cats_dir = data_dir + '/train/cats/'
    train_dogs_dir = data_dir + '/train/dogs/'
    tfrecord_file = data_dir + '/train/train.tfrecords'
    train_cat_filenames = [train_cats_dir + filename for filename in os.listdir(train_cats_dir)]
    train_dog_filenames = [train_dogs_dir + filename for filename in os.listdir(train_dogs_dir)]
    train_filenames = train_cat_filenames + train_dog_filenames
    train_labels = [0] * len(train_cat_filenames) + [1] * len(train_dog_filenames)  # 将 cat 类的标签设为0,dog 类的标签设为1
    # 写TFRecord 文件
    with tf.io.TFRecordWriter(tfrecord_file) as writer:
        for filename, label in zip(train_filenames, train_labels):
            image = open(filename, 'rb').read()     # 读取数据集图片到内存,image 为一个 Byte 类型的字符串
            feature = {                             # 建立 tf.train.Feature 字典
                'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])),  # 图片是一个 Bytes 对象
                'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))   # 标签是一个 Int 对象
            }
            example = tf.train.Example(features=tf.train.Features(feature=feature)) # 通过字典建立 Example
            writer.write(example.SerializeToString())   # 将Example序列化并写入 TFRecord 文件
    
    
    # 读TFRecord 文件
    raw_dataset = tf.data.TFRecordDataset(tfrecord_file)    # 读取 TFRecord 文件
    feature_description = { # 定义Feature结构,告诉解码器每个Feature的类型是什么
        'image': tf.io.FixedLenFeature([], tf.string),
        'label': tf.io.FixedLenFeature([], tf.int64),
    }
    def _parse_example(example_string): # 将 TFRecord 文件中的每一个序列化的 tf.train.Example 解码
        feature_dict = tf.io.parse_single_example(example_string, feature_description)
        feature_dict['image'] = tf.io.decode_jpeg(feature_dict['image'])    # 解码JPEG图片
        return feature_dict['image'], feature_dict['label']
    dataset = raw_dataset.map(_parse_example)
    # 数据集使用
    import matplotlib.pyplot as plt 
    for image, label in dataset:
        plt.title('cat' if label == 0 else 'dog')
        plt.imshow(image.numpy())
        plt.show()
  • 相关阅读:
    排查程序死循环,死锁的方法 ——pstack
    可变参数使用
    snprintf 返回值陷阱 重新封装
    linux 查看cpu个数,内存情况,系统版本
    nginx取结构体地址
    fuser命令使用心得
    Linux中dos2unix批量转换
    rpm中config,config(noreplace)区别
    slowhttptest慢攻击工具介绍
    jmeter性能测试
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/15907664.html
Copyright © 2020-2023  润新知