tensorflow基础:tf.data.Dataset.from_tensor_slices() 与 tf.data.Dataset.from_generator()的异同

本文介绍了TensorFlow中两种创建数据集的方法。tf.data.Dataset.from_tensor_slices(tensor)将tensor沿首维切片创建数据集,使用方便但占内存;tf.data.Dataset.from_generator()从生成器读取样本,可限制内存中样本个数。数据集较大时,建议使用后者。

tf.data.Dataset.from_tensor_slices(tensor):

        -->将tensor沿其第一个维度切片,返回一个含有N个样本的数据集(假设tensor的第一个维度为N).

        -->得到的数据集是一个类对象,具有“迭代器”等函数,方便遍历数据集中的样本。

        -->缺点:需要将整个数据集整体传入,然后切片建立数据集类对象。比较占内存。

       -->代码示例,参考:https://blog.youkuaiyun.com/oMoDao1/article/details/84387588

tf.data.Dataset.from_generator():从一个生成器读取样本。函数参数如下:

          -->tf.data.Dataset.from_generator(data_generator,output_data_type,output_data_shape).

         -->其中data_generator需要自己定义,每次yield一个样本。

          -->from_generator函数返回一个类对象,类对象通过传入的data_generator函数获取数据集数据,

                类对象内部具有“迭代器”函数,通过迭代器与自定义的data_generator遍历数据集。

        -->from_generator函数返回类对象的其他函数:

                            1) dataset.prefetch(buffer_size=1000)

                            2)dataset.shuffle(buffer_size=1000).batch(batch_size)

                             3)iter = dataset.make_one_shot_iterator() 

                                    batch_data = iter.get_next()         

         --> 优点:通过自定义的生成器不断传入样本数据,用dataset.prefetch(buffer_size=1000)中的buffer_size限制放入内存的样本的个数                         

         -->代码示例,参考https://blog.youkuaiyun.com/foreseerwang/article/details/80572182

                                        https://blog.youkuaiyun.com/ONE_SIX_MIX/article/details/80633187

################################################################################

总结:当数据集比较大时,建议使用tf.data.Dataset.from_generator()。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值