[转]『TensorFlow』读书笔记_TFRecord学习

深度学习Tensorflow工程化项目实战 读书笔记 深度学习Tensorflow工程化项目实战读书笔记 之后将进行笔记更新 阅读详情

 

转自:https://www.cnblogs.com/hellcat/p/8146748.html#_label0_3

目录

 


回到顶部

程序介绍

包导入

1

2

3

4

5

6

7

8

9

10

11

12

# Author : Hellcat

# Time   : 17-12-29

 

 

import os

import numpy as np

np.set_printoptions(threshold=np.inf)

import tensorflow as tf

config = tf.ConfigProto()

config.gpu_options.allow_growth = True

sess = tf.Session(config=config)

from tensorflow.examples.tutorials.mnist import input_data

 

TFRecord录入格式转换

TFRecord的录入格式是确定的,整数或者二进制,在train函数中能查看所有可以接受类型

1

2

3

4

5

6

7

8

def _int64_feature(value):

    """生成整数数据属性"""

    return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

 

 

def _bytes_feature(value):

    """生成字符型数据属性"""

    return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

 

TFRecord文件写入测试

将mnist数据以每张图片为单位写入同一个TFR文件,

实际上就是每次把一个图片相关信息都写入,注意文件类型,二级制数据需要以string的格式保存

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

def TFRecord_write():

    """将mnist数据集写入TFR文件"""

    mnist = input_data.read_data_sets('./Data_Set/Mnist_data',

                                      dtype=tf.uint8,one_hot=True)

 

    images = mnist.train.images

    labels = mnist.train.labels

    pixels = images.shape[1]                     # 784

    num_examples = mnist.train.num_examples      # 55000

 

    # TFRecords文件地址

    filename = './TFRecord_Output/mnist_train.tfrecords'

 

    if not os.path.exists('./TFRecord_Output/'):

        os.makedirs('./TFRecord_Output/')

 

    # 创建一个writer书写文件

    writer = tf.python_io.TFRecordWriter(filename)

    for index in range(num_examples):

        # 提取单张图像矩阵并转换为字符串

        image_raw = images[index].tostring()

        # 将单张图片相关数据写入TFR文件

        example = tf.train.Example(features=tf.train.Features(feature={

            'pixels':  _int64_feature(pixels),

            'label':   _int64_feature(np.argmax(labels[index])),

            'img_raw': _bytes_feature(image_raw)

        }))

        writer.write(example.SerializeToString())  # 序列化为字符串

    writer.close()

调用,

1

2

if __name__=='__main__':

    TFRecord_write()

输出如下,

 

TFRecord文件读取测试

实际的读取基本单位和存入的基本单位是一一对应的,当然也可以复数读取,但是由于tf后续有batch拼接的函数,所以意义不大

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

def TFRecord_read():

    """从TFR文件读取mnist数据集合"""

    # 创建一个reader读取文件

    reader = tf.TFRecordReader()

    # 创建读取文件队列维护文件列表

    filename_queue = tf.train.string_input_producer(['./TFRecord_Output/mnist_train.tfrecords'])

 

    # 读取数据

    # 每次读取一个

    # _, serialized_example = reader.read(filename_queue)

    # 每次读取多个

    _, serialized_example = reader.read_up_to(filename_queue,10)

 

    # 解析样例

    # 解析函数选择必须和上面读取函数选择相一致

    # 解析单个样例

    # features = tf.parse_single_example(

    # 同时解析所有样例

    features = tf.parse_example(

        serialized_example,

        features={

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

            'pixels':    tf.FixedLenFeature([],tf.int64),

            'label':    tf.FixedLenFeature([],tf.int64),

        })

    # 解析二进制数据格式,将之按照uint8格式解析

    images = tf.decode_raw(features['img_raw'],tf.uint8)

    labels = tf.cast(features['label'],tf.int32)

    pixels = tf.cast(features['pixels'],tf.int32)

 

    batch_size = 2

    capacity = 1000 + 3 * batch_size

 

    images.set_shape([10,784])

    labels.set_shape(10)

    pixels.set_shape(10)

    image_batch, label_batch, pixel_batch = tf.train.batch(

        [images, labels, pixels], batch_size=batch_size, capacity=capacity)

    # 线程控制器

    coord = tf.train.Coordinator()

    threads = tf.train.start_queue_runners(sess=sess,coord=coord) # 这里指代的是读取数据的线程,如果不加的话队列一直挂起

    for i in range(10):

        # print(images, labels, pixels)

        # print(sess.run(images))

        image, label, pixel = sess.run([image_batch,label_batch,pixel_batch])

        # image, label, pixel = sess.run([images,labels,pixels])

        print(image.shape,label,pixel)

输出,

拼接batch尺寸为2,每次读取10个数据

可以看到,这里batch尺寸指定的实际上是读取次数

(2, 10, 784)

[[7 3 4 6 1 8 1 0 9 8]
 [0 3 1 2 7 0 2 9 6 0]]

[[784 784 784 784 784 784 784 784 784 784]
 [784 784 784 784 784 784 784 784 784 784]]
……

注意读取数目和解析数目选择的函数是要对应的,

1

2

3

4

5

6

7

8

9

10

11

12

# 读取数据

# 每次读取一个

# _, serialized_example = reader.read(filename_queue)

# 每次读取多个,这里指定10个

_, serialized_example = reader.read_up_to(filename_queue,10)

 

# 解析样例

# 解析函数选择必须和上面读取函数选择相一致

# 解析单个样例

# features = tf.parse_single_example()

# 同时解析所有样例

features = tf.parse_example()

 值得注意的是这句,

1

threads = tf.train.start_queue_runners(sess=sess,coord=coord)

虽然后续未必会调用(coord实际上还是会调用用于协调停止),但实际上控制着队列的数据读取部分的启动,注释掉后会导致队列有出无进进而挂起。

 

TFRecord文件批量生成

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

def TFR_gen():

    """TFR样例数据生成"""

    # 定义写多少个文件(数据量大时可以写入多个文件加速)

    num_shards = 2

    # 定义每个文件中放入多少数据

    instances_per_shard = 2

    for i in range(num_shards):

        file_name = './TFRecord_Output/data.tfrecords-{}-of-{}'.format(i,num_shards)

        writer = tf.python_io.TFRecordWriter(file_name)

        for j in range(instances_per_shard):

            example = tf.train.Example(features=tf.train.Features(feature={

                'i':_int64_feature(i),

                'j':_int64_feature(j),

                'list':_bytes_feature(bytes([1,2,3]))

            }))

            writer.write(example.SerializeToString())  # 序列化为字符串

        writer.close()

 输出如下,

 

TFRecord文件读取测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

def TFR_load():

    """批量载入TFR数据"""

    # 匹配文件名

    files = tf.train.match_filenames_once('./TFRecord_Output/data.tfrecords-*')

    import glob

    # files = glob.glob('./TFRecord_Output/data.tfrecords-*')

    # 载入文件名

    filename_queue = tf.train.string_input_producer(files,shuffle=True)

 

    reader = tf.TFRecordReader()

    _,serialized_example = reader.read(filename_queue)

    features = tf.parse_single_example(

        serialized_example,

        features={

            'i':tf.FixedLenFeature([],tf.int64),

            'j':tf.FixedLenFeature([],tf.int64),

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

        })

    '''

    # tf.train.match_filenames_once操作中产生了变量

    # 值得注意的是局部变量,需要用下面的初始化函数初始化

    sess.run(tf.local_variables_initializer())

    print(sess.run(files))

    coord = tf.train.Coordinator()

    threads = tf.train.start_queue_runners(sess=sess,coord=coord)

    for i in range(6):

        print(sess.run([features['i'],features['j']]))

    coord.request_stop()

    coord.join(threads)

    '''

 

    example, label, array = features['i'], features['j'], features['list']

    # 每个batch的中样例的个数

    batch_size = 3

    # 队列中样例的个数

    capacity = 1000 + 3 * batch_size

 

    suffer = False

    # batch操作实际代指的就是数据读取和预处理操作

    if suffer is not True:

        example_batch, label_batch, array_batch = tf.train.batch(

            [example, label, array], batch_size=batch_size, capacity=capacity)

    else:

        # 不同线程处理各自的文件

        # 随机包含各个线程选择文件名的随机和文件内部数据读取的随机

        example_batch, label_batch, array_batch = tf.train.shuffle_batch(

            [example, label, array], batch_size=batch_size, capacity=capacity,

            min_after_dequeue=30)

 

 

    sess.run(tf.local_variables_initializer())

    coord = tf.train.Coordinator()

    threads = tf.train.start_queue_runners(sess=sess, coord=coord)  # 这里指代的是读取数据的线程,如果不加的话队列一直挂起

    for i in range(2):

        cur_example_batch, cur_label_batch, cur_array_batch = sess.run([example_batch, label_batch, array_batch])

        print(cur_example_batch, cur_label_batch, cur_array_batch)

 

    coord.request_stop()

    coord.join(threads)

注意下面介绍,

1

2

3

# tf.train.match_filenames_once操作中产生了变量

# 值得注意的是局部变量,需要用下面的初始化函数初始化

sess.run(tf.local_variables_initializer())

batch生成的两个函数如下,

1

2

3

4

5

6

7

8

9

10

11

suffer = False

# batch操作实际代指的就是数据读取和预处理操作

if suffer is not True:

   example_batch, label_batch, array_batch = tf.train.batch(

       [example, label, array], batch_size=batch_size, capacity=capacity)

else:

    # 不同线程处理各自的文件

    # 随机包含各个线程选择文件名的随机和文件内部数据读取的随机

    example_batch, label_batch, array_batch = tf.train.shuffle_batch(

        [example, label, array], batch_size=batch_size, capacity=capacity,

        min_after_dequeue=30)

  • 单一文件多线程,那么选用tf.train.batch(需要打乱样本,有对应的tf.train.shuffle_batch)
  • 多线程多文件的情况,一般选用tf.train.batch_join来获取样本(打乱样本同样也有对应的tf.train.shuffle_batch_join使用)

 

回到顶部

batch和batch_join的说明

文件准备

1

2

3

4

5

6

7

$ echo -e "Alpha1,A1\nAlpha2,A2\nAlpha3,A3" > A.csv 

$ echo -e "Bee1,B1\nBee2,B2\nBee3,B3" > B.csv 

$ echo -e "Sea1,C1\nSea2,C2\nSea3,C3" > C.csv 

$ cat A.csv 

Alpha1,A1 

Alpha2,A2 

Alpha3,A3 

 

单个Reader,单个样本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import tensorflow as tf 

# 生成一个先入先出队列和一个QueueRunner 

filenames = ['A.csv', 'B.csv', 'C.csv'] 

filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 

# 定义Reader 

reader = tf.TextLineReader() 

key, value = reader.read(filename_queue) 

# 定义Decoder 

example, label = tf.decode_csv(value, record_defaults=[['null'], ['null']]) 

# 运行Graph 

with tf.Session() as sess: 

    coord = tf.train.Coordinator()  #创建一个协调器,管理线程 

    threads = tf.train.start_queue_runners(coord=coord)  #启动QueueRunner, 此时文件名队列已经进队。 

    for i in range(10): 

        print example.eval()   #取样本的时候,一个Reader先从文件名队列中取出文件名,读出数据,Decoder解析后进入样本队列。 

    coord.request_stop() 

    coord.join(threads) 

# outpt 

# Alpha1 

# Alpha2 

# Alpha3 

# Bee1 

# Bee2 

# Bee3 

# Sea1 

# Sea2 

# Sea3 

# Alpha1 

 

单个Reader,多个样本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

import tensorflow as tf 

filenames = ['A.csv', 'B.csv', 'C.csv']

## filenames = tf.train.match_filenames_once('.\data\*.csv')

filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 

reader = tf.TextLineReader() 

key, value = reader.read(filename_queue) 

example, label = tf.decode_csv(value, record_defaults=[['null'], ['null']]) 

# 使用tf.train.batch()会多加了一个样本队列和一个QueueRunner。Decoder解后数据会进入这个队列,再批量出队。 

# 虽然这里只有一个Reader,但可以设置多线程,相应增加线程数会提高读取速度,但并不是线程越多越好。 

example_batch, label_batch = tf.train.batch( 

      [example, label], batch_size=5) 

with tf.Session() as sess: 

    coord = tf.train.Coordinator() 

    threads = tf.train.start_queue_runners(coord=coord) 

    for i in range(10): 

        print example_batch.eval() 

    coord.request_stop() 

    coord.join(threads) 

# output 

# ['Alpha1' 'Alpha2' 'Alpha3' 'Bee1' 'Bee2'] 

# ['Bee3' 'Sea1' 'Sea2' 'Sea3' 'Alpha1'] 

# ['Alpha2' 'Alpha3' 'Bee1' 'Bee2' 'Bee3'] 

# ['Sea1' 'Sea2' 'Sea3' 'Alpha1' 'Alpha2'] 

# ['Alpha3' 'Bee1' 'Bee2' 'Bee3' 'Sea1'] 

# ['Sea2' 'Sea3' 'Alpha1' 'Alpha2' 'Alpha3'] 

# ['Bee1' 'Bee2' 'Bee3' 'Sea1' 'Sea2'] 

# ['Sea3' 'Alpha1' 'Alpha2' 'Alpha3' 'Bee1'] 

# ['Bee2' 'Bee3' 'Sea1' 'Sea2' 'Sea3'] 

# ['Alpha1' 'Alpha2' 'Alpha3' 'Bee1' 'Bee2']

 

多Reader,多个样本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import tensorflow as tf 

filenames = ['A.csv', 'B.csv', 'C.csv'] 

filename_queue = tf.train.string_input_producer(filenames, shuffle=False) 

reader = tf.TextLineReader() 

key, value = reader.read(filename_queue) 

record_defaults = [['null'], ['null']] 

example_list = [tf.decode_csv(value, record_defaults=record_defaults) 

                  for _ in range(2)]  # Reader设置为2 

# 使用tf.train.batch_join(),可以使用多个reader,并行读取数据。每个Reader使用一个线程。 

example_batch, label_batch = tf.train.batch_join( 

      example_list, batch_size=5) 

with tf.Session() as sess: 

    coord = tf.train.Coordinator() 

    threads = tf.train.start_queue_runners(coord=coord) 

    for i in range(10): 

        print example_batch.eval() 

    coord.request_stop() 

    coord.join(threads) 

 

# output 

# ['Alpha1' 'Alpha2' 'Alpha3' 'Bee1' 'Bee2'] 

# ['Bee3' 'Sea1' 'Sea2' 'Sea3' 'Alpha1'] 

# ['Alpha2' 'Alpha3' 'Bee1' 'Bee2' 'Bee3'] 

# ['Sea1' 'Sea2' 'Sea3' 'Alpha1' 'Alpha2'] 

# ['Alpha3' 'Bee1' 'Bee2' 'Bee3' 'Sea1'] 

# ['Sea2' 'Sea3' 'Alpha1' 'Alpha2' 'Alpha3'] 

# ['Bee1' 'Bee2' 'Bee3' 'Sea1' 'Sea2'] 

# ['Sea3' 'Alpha1' 'Alpha2' 'Alpha3' 'Bee1'] 

# ['Bee2' 'Bee3' 'Sea1' 'Sea2' 'Sea3'] 

# ['Alpha1' 'Alpha2' 'Alpha3' 'Bee1' 'Bee2'] 

tf.train.batch与tf.train.shuffle_batch'数是单个Reader读取,但是可以多线程。tf.train.batch_join'和tf.train.shuffle_batch_join可设置多Reader读取,每个Reader使用一个线程。至于两种方法的效率,单Reader时,2个线程就达到了速度的极限。多Reader时,2个Reader就达到了极限。所以并不是线程越多越快,甚至更多的线程反而会使效率下降。

 

在这个例子中, 虽然只使用了一个文件名队列, 但是TensorFlow依然能保证多个文件阅读器从同一次迭代(epoch)的不同文件中读取数据,知道这次迭代的所有文件都被开始读取为止。(通常来说一个线程来对文件名队列进行填充的效率是足够的)

另一种替代方案是: 使用tf.train.shuffle_batch 函数,设置num_threads的值大于1。 这种方案可以保证同一时刻只在一个文件中进行读取操作(但是读取速度依然优于单线程),而不是之前的同时读取多个文件。这种方案的优点是:

  • 避免了两个不同的线程从同一个文件中读取同一个样本。
  • 避免了过多的磁盘搜索操作。

简单来说,

单一文件多线程,那么选用tf.train.batch(需要打乱样本,有对应的tf.train.shuffle_batch)

多线程多文件的情况,一般选用tf.train.batch_join来获取样本(打乱样本同样也有tf.train.shuffle_batch_join)

 

Multisim 11.0的安装破解汉化步骤 15:打开注册机,选择管理员运行,默认第一项,选择生成文件路径,这里不要随意选择,要找到你安装Multisim安装路径下Shard下的License Manager路径下,否则会报错,破解失败。14:后面会出现一个更新提示,选择否,然后选择重启电脑后,先不要选择重启电脑,在这里出现了问题(可能敲击回车,默认去重启电脑了),所以我说不要重启电脑,重启破解时右下角出现这,点击否。17:重启电脑,如果前面重启过,那可以跳过重启,应用程序下找到下图所示,启动。16:点击确认覆盖,路径下生成了该文件。 阅读详情

相关推荐

[Linux]双网卡 CentOS 系统中指定网络请求走特定网卡的配置方法

本文详细介绍了在双网卡CentOS系统中指定特定域名/IP通过指定网卡传输流量的方法。核心步骤包括:1)确认网卡信息(ip addr)和域名IP解析(nslookup);2)添加临时路由(ip route add);3)持久化配置(创建route-eth1文件);4)验证配置(ip route show和curl测试)。文章还提供了网关查询、路由删除等常见问题的解决方法,并区分了不同CentOS版本重启网络服务的命令差异。通过合理配置路由规则,可实现流量的定向传输需求。

wingaso的博客 1572

『TensorFlow』读书笔记_TFRecord学习

程序介绍 包导入 # Author : Hellcat # Time : 17-12-29 import os import numpy as np np.set_printoptions(threshold=np.inf) import tensorflow as tf config = tf.ConfigProto() config.gpu_options....

weixin_34037173的博客 230

Agentic AI上下文工程架构终极指南:全面解决智能体理解问题

在开始架构设计前,我们需要先明确两个核心概念——Agentic AI和上下文工程。Agentic AI(智能体AI)是具备自主目标、环境交互、任务分解能力的AI系统。自主性:不需要人类逐步指令,能自己规划任务(比如“帮我订机票”→自动分解为“查航班→选座位→填信息→支付”);动态性:能根据环境变化调整行为(比如订机票时发现航班延误,自动改签到下一班);连续性:能记住历史交互(比如“上次你说喜欢靠窗位,这次帮你预留了”)。

AI开发架构师 1116

tensorflow中read_up_to函数读多个文件时一次能读出来的记录数

采用如下代码从多个文件中读取数据时,read_up_to函数每次随机从文件名队列中抽取一个未读完的文件,从该文件中读取至多num_records条记录。若该文件中剩余未读记录数不足num_records条,则有几条就读几条出来。 如果多次调用read_up_to函数,则优先读完上次没有读完的文件。之后再从剩下没读过的文件中随机抽取一个进行读取。如果所有文件都读完后继续调用read_up_to函数,则重新开始对整个数据集的新一轮读取。 reader = tf.TFRecordReader() filename

Frank_Yan_的博客 988

睿尔曼超轻量仿人机械臂--机械臂接口介绍

本文介绍了睿尔曼超轻量仿人机械臂的控制器接口及末端接口。

realman_Rop的博客 3436

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

Systemcall名屋 2978

tf.ReaderBase

目录 1、__init__ 2、属性 3、num_records_produced 4、num_work_units_completed 5、read 6、read_up_to 7、reset 8、restore_state 9、serialize_state 用于不同读取器类型的基类,该基类将生成每个步骤的记录。从概念上讲,读取器将字符串“工作单元”转换为记录(键、值对)。通...

weixin_36670529的博客 303

全球气候模式降尺度方法总结及其代码实现

简介总结各类型气候模式降尺度方法

WW、forever的博客 1万+

tensorflow 相关技术

一、将单个图像组合成 batch 方法一: img_batch, lab_batch = tf.train.batch( [img, lab], batch_size = batchSize, capacity = capacity) 方法二: reader.read_up_to(n)

weareu的博客 219

YOLOv8进阶实战:融合SAHI超推理算法,在无人机应用中精准捕捉视频与图片中的微小目标

YOLOv8改进是一种先进的目标检测算法,通过引入辅助超推理算法SAHI推理,使得小目标无法逃避检测。SAHI推理算法结合视频和图片的特点,利用先进的超推理技术,提高了目标检测的准确性和鲁棒性。不仅如此,YOLOv8改进还支持对视频和图片进行实时的目标检测,将检测结果直观地呈现给用户。这一技术的应用范围广泛,可以用于安防领域,提升监控设备的性能和效率;也可以用于无人驾驶领域,实现精准的目标识别和跟踪。总之,YOLOv8改进是一项具有突破性的技术,为目标检测领域带来了重大的进展。

weixin_51988935的博客 807

【TIDB】TiDB认证考试PTCA 练习题 题库

TiDB认证考试PTCA 练习题 题库

DBA之路的博客 4720

3 TFRecord样例程序实战

将图片数据写入Record文件 # 定义函数转化变量类型。 def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64List(value=[value])) def _bytes_feature(value): return tf.train.Feature(bytes...

weixin_30401605的博客 146

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

Robot_PLC_HMI_Automation 6514

深度学习之Tensorflow工程化项目实战 读书笔记(03.18)

日期:2020.03.18 资料:《深度学习之Tensorflow工程化项目实战》 章节:第四章 代码分析: **·**实例4.4: line14: reader = tf.TextLineReader(skip_header_lines=1) 分析:tf内置处理文本的函数,可以按行读取以换行符为间隔的文本文件 line19:featurecolumn = [i for i in cvscolu...

ONENESSY的博客 850

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

tfrecord原理详解 手把手教生成tfrecord文件与解析tfrecord文件

1.什么是tfrecord TFRecord 是Google官方推荐的一种数据格式,是Google专门为TensorFlow设计的一种数据格式。 TFRecord本质上是二进制文件,目的是更好的利用内存。用户可以将训练集/测试集打包成生成TFRecord文件,后续就可以配合TF中相关的API实现数据的加载,处理,训练等一系列工作,可以方便高效的训练与评估模型。 2.tfrecord原理 TFRecord 并非是TensorFlow唯一支持的数据格式,你也可以使用CSV或文本等格式,但是对于TensorFlo

bitcarmanlee的博客 9773

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

TFRecord教程、原理及用法

经常使用tensorflow的人,想必接触过tfrecord文件格式。

weixin_41558411的博客 7357

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习12-TFRecord详解

文章目录1.TFRecord简介1)TFRecord是什么2)为什么用TFRecord3)TFRecord格式2.写入TFRecord3.读取TFRecord文件4.案例实战-猫狗图片分类 1.TFRecord简介 1)TFRecord是什么 TFRecord --> Example --> feature --> key-value键值对,并且value的取值有三种 2)为什么用TFRecord 为什么要用TFRecord? 3)TFRecord格式 2.写入TFReco

柳杰的博客 1309

【数据集处理】TFRecord 文件

TFRecord 文件是 TensorFlow 中的一种常用数据格式,主要用于高效地存储大规模数据集。它可以将数据存储为二进制格式,既减少了存储空间,又加快了数据读取速度,尤其适合大规模的机器学习任务。

藓类少女的博客 1344

TensorFlow(4)-tfrecord数据存储、读取

TFRecord1. tf.train.Example1.1 tfrecord 数据范式转化1.2 demo 数据集构建2. TFRecord 读写2.1 写入1-tf.io.TFRecordWriter()2.3 读取-tf.data.TFRecordDataset()2.3 data -> dataset -> 存储-tf.data.experimental.TFRecordWriter() tfrecord 用于存储二进制序列数据的一种范式,按顺序存,按顺序取。里面存的每一条数据都是一个

sinat_40624829的博客 2997

tfrecord文件格式、读取、写入介绍

tfrecord文件格式,是深度学习框架tensorflow专用的一种文件格式,其底层使用protobuf,TensorFlow(python)也提供了api用于读取和写入tfrecord,非常方便,而对于golang语言,目前没有成熟的包可以使用,调研过一个nivida的开源库,这个库已经三四年没有更新,在读取tfrecord上存在问题,所以go语言,至今没有找到合适的包可以操作tfrecord。

liupenglove的专栏 3349

Tensorflow之TFRecord的原理和使用心得

点击上方,选择星标或置顶,每天给你送上干货作者|对白  出品|公众号:对白的算法屋大家好,我是对白。目前,越来越多的互联网公司内部都有自己的一套框架去训练模型,而模型训练时需要的数据则都保存在分布式文件系统(HDFS)上。Hive作为构建在HDFS上的一个数据仓库,它本质上可以看作是一个翻译器,可以将HiveSQL语句翻译成MapReduce程序或Spark程序,因此模型需要的数据例如csv/libsvm文件都会保存成Hive表并存放在HDFS上,那么问题就来了,如何大规模地把HDFS中

3382

TFRecord简介,原理分析,代码实现?

TFRecord简介,原理分析,代码实现? 在利用深度学习算法搭建完成网络之后,我们要对网络进行训练,要训练网络就要有训练数据,通常我们会直接对硬盘上存放数据进行操作,来fetch到网络中。这样直接从硬盘上读取 数据太慢了,为了加快数据读取,今天我们介绍一种比较好的数据格式 tfrecord,那么什么是tfrecord呢? 什么TFRecord格式的数据? Tensorfl...

机器学习,深度学习 7639

tensorflow dataset 基础之——tfRecord

tf.record是tensorflow中独有的一个格式,故其有很多优势,在读取数据方面,tf.records有着速度快的优势 1. tfRecord介绍 -> tf.train.Example. -> tf.train.Features -> {"key": tf.train.Feature}. -> tf.train.Feature -> tf.train.ByteList/FloatList/Int64List favorite_books = [...

zhao_crystal的博客 1845

TensorFlow TFRecords简介

这篇博客将介绍TensorFlow的TFRecords,提供有关TFRecords的所有信息的一应俱全的介绍。从如何构建基本TFRecords到用于训练 SRGAN 和 ESRGAN 模型的高级TFRecords的所有内容。包括什么是TFRecords,如何序列化,反序列化数据,以及如何使用TFRecords预处理和序列化像div2k这样的大型数据集,如何使用TFRecords及TensorFlow训练深度神经网络。

qq_40985985的博客 772

tf.TFRecordReader()函数解析(最清晰的解释)

读取tfrecord数据 从TFRecords文件中读取数据, 首先需要用tf.train.string_input_producer生成一个解析队列。之后调用tf.TFRecordReader的tf.parse_single_example解析器。如下图: 解析器首先读取解析队列,返回serialized_example对象,之后调用tf.parse_single_example操作将Exam...

种树最好的时间是10年前,其次是现在!!! 8868
上一篇: 经验:tensorflow 的 GPU 配置
下一篇: TFRecoder样例程序——《tensorflow 实战 google 深度学习框架》
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值