python – Tensorflow:如何查找tf.data.Dataset API对象的大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Tensorflow:如何查找tf.data.Dataset API对象的大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
![python – Tensorflow:如何查找tf.data.Dataset API对象的大小](/upload/InfoBanner/zyjiaocheng/718/060a9b1190424fb38f1b438b3374179c.jpg)
我理解Dataset API是一种迭代器,它不会将整个数据集加载到内存中,因此无法找到数据集的大小.我正在谈论存储在文本文件或tfRecord文件中的大型数据语料库.通常使用tf.data.TextLineDataset或类似的东西来读取这些文件.使用tf.data.Dataset.from_tensor_slices找到加载的数据集的大小是微不足道的.
我问数据集大小的原因如下:
假设我的数据集大小为1000个元素.批量大小= 50个元素.然后训练步骤/批次(假设1个纪元)= 20.在这20个步骤中,我想将我的学习率从0.1到0.01指数衰减为
tf.train.exponential_decay(
learning_rate = 0.1,
global_step = global_step,
decay_steps = 20,
decay_rate = 0.1,
staircase=False,
name=None
)
在上面的代码中,我有“和”想要设置decay_steps =每个epoch的步数/批次数= num_elements / batch_size.仅当预先知道数据集中的元素数量时,才能计算此值.
提前知道大小的另一个原因是使用tf.data.Dataset.take(),tf.data.Dataset.skip()方法将数据拆分为训练集和测试集.
PS:我不是在寻找蛮力的方法,比如遍历整个数据集并更新计数器以计算元素数量或putting a very large batch size and then finding the size of the resultant dataset等.
解决方法:
您可以选择手动指定数据集的大小吗?
我如何加载我的数据:
sample_id_hldr = tf.placeholder(dtype=tf.int64, shape=(None,), name="samples")
sample_ids = tf.Variable(sample_id_hldr, validate_shape=False, name="samples_cache")
num_samples = tf.size(sample_ids)
data = tf.data.Dataset.from_tensor_slices(sample_ids)
# "load" data by id:
# return (id, data) for each id
data = data.map(
lambda id: (id, some_load_op(id))
)
在这里,您可以通过使用占位符初始化sample_ids一次来指定所有样本ID.
您的样本ID可以是例如文件路径或简单数字(np.arange(num_elems))
然后在num_samples中提供元素数量.
内容总结
以上是互联网集市为您收集整理的python – Tensorflow:如何查找tf.data.Dataset API对象的大小全部内容,希望文章能够帮你解决python – Tensorflow:如何查找tf.data.Dataset API对象的大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。