- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 TensorFlow documentation 、tf.contrib.data.Dataset 类的 prefetch
和 map
方法,都有一个名为 buffer_size
的参数.
对于 prefetch
方法,参数称为 buffer_size
,根据文档:
buffer_size: A tf.int64 scalar tf.Tensor, representing the maximumnumber elements that will be buffered when prefetching.
对于map
方法,参数被称为output_buffer_size
并且根据文档:
output_buffer_size: (Optional.) A tf.int64 scalar tf.Tensor,representing the maximum number of processed elements that will bebuffered.
与 shuffle
方法类似,根据文档显示相同的数量:
buffer_size: A tf.int64 scalar tf.Tensor, representing the number ofelements from this dataset from which the new dataset will sample.
这些参数之间有什么关系?
假设我创建一个Dataset
对象,如下所示:
tr_data = TFRecordDataset(trainfilenames)
tr_data = tr_data.map(providefortraining, output_buffer_size=10 * trainbatchsize, num_parallel_calls\
=5)
tr_data = tr_data.shuffle(buffer_size= 100 * trainbatchsize)
tr_data = tr_data.prefetch(buffer_size = 10 * trainbatchsize)
tr_data = tr_data.batch(trainbatchsize)
上面代码片段中的 buffer
参数扮演什么角色?
最佳答案
TL;DR 尽管名称相似,但这些参数的含义却截然不同。 Dataset.shuffle()
中的 buffer_size
会影响数据集的随机性,从而影响元素的生成顺序。 Dataset.prefetch()
中的 buffer_size
仅影响生成下一个元素所需的时间。
tf.data.Dataset.prefetch()
中的 buffer_size
参数以及 tf.contrib.data.Dataset.map()
中的 output_buffer_size
参数提供一种调整输入管道性能的方法:两个参数都告诉 TensorFlow 创建最多包含 buffer_size
元素的缓冲区,以及一个后台线程来填充该缓冲区背景。(请注意,当 Dataset.map()
从 tf.contrib.data
移动到 tf 时,我们从
。新代码应在 Dataset.map()
中删除了 output_buffer_size
参数。 datamap()
之后使用 Dataset.prefetch()
以获得相同的行为。)
添加预取缓冲区可以通过将数据预处理与下游计算重叠来提高性能。通常,在管道的最后添加一个小的预取缓冲区(可能只有一个元素)是最有用的,但更复杂的管道可以从额外的预取中受益,特别是当生成单个元素的时间可能变化时。
相比之下,tf.data.Dataset.shuffle()
的 buffer_size
参数影响转换的随机性。我们设计了 Dataset.shuffle() 转换(如它所取代的 tf.train.shuffle_batch()
函数)来处理太大而无法放入内存的数据集。它不会打乱整个数据集,而是维护一个包含 buffer_size 元素的缓冲区,并从该缓冲区中随机选择下一个元素(如果可用,则将其替换为下一个输入元素)。更改 buffer_size 的值会影响洗牌的均匀程度:如果 buffer_size 大于数据集中的元素数量,则会得到均匀的洗牌;否则,您将获得均匀的洗牌。如果它是 1
那么你根本就不会进行洗牌。对于非常大的数据集,典型的“足够好”的方法是在训练之前将数据随机分片成多个文件一次,然后均匀地对文件名进行洗牌,然后使用较小的洗牌缓冲区。但是,适当的选择将取决于您培训工作的确切性质。
关于tensorflow - Dataset.map 、 Dataset.prefetch 和 Dataset.shuffle 中 buffer_size 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46444018/
我有两个模型诊所和 ClinicCredits:我想要一份带有可用余额的诊所列表问题是,如果我使用注释,我必须使用 ClinicCredits 的查询集循环获取可用的平衡: class Clinic(
我有两个模型诊所和 ClinicCredits:我想要一份带有可用余额的诊所列表问题是,如果我使用注释,我必须使用 ClinicCredits 的查询集循环获取可用的平衡: class Clinic(
在 Java 中,是否存在与 GNU C 扩展 prefetch 和 align(64) 等函数等效的功能,即缓存行对齐? 最佳答案 据我所知,这不是因为它在按需编译系统中没有意义。对于 Java,运
我正在尝试返回,对于每个 UserProfile,它具有一对多 Subscription,它具有两个 Artist 的外键> 和 UserProfile,每个艺术家有许多 ReleaseGroup,c
我正在使用 django 1.7.1 并尝试按照 docs 使用 Prefetch 对象 但是我收到一个名称错误 global name 'Prefetch' is not defined . 我的查
我刚看完 https://developers.google.com/web/updates/2018/07/nostate-prefetch ,它是关于预渲染资源的 nostate 预取。我对这条线
为了缩短页面加载时间,我想对外部 javascript 使用 dns-prefetch 和 preconnect。 如果资源(在我的例子中是外部 javascript)已经在浏览器缓存中会怎样?
场景: 我有一个生产者和消费者,只有一个传输消息的队列。消费者将根据已消费它的消息更新 DB 上的值。不应将任何操作并行发送到数据库。所以,我们不应该做任何导致数据库数据并发的事情。我用 prefet
documentation显示如何将 Prefetch() 对象保存在变量中: >>> prefetch = Prefetch('choice_set', queryset=voted_choices
在查询具有多个 m2m 关系的模型时,我正在使用 prefetch_related: qs = context.mymodel_set.prefetch_related('things1', 'thi
让我们看一下 django 文档中的披萨和浇头模型示例。一个披萨可能有多种配料。 如果我们进行查询: pizzas = Pizza.objects.prefetch_related('toppings
我有一个模型 test带两个平方米 字段:foo和 bar . 我正在尝试注释这些相关字段的条件计数,即计算满足特定条件的相关对象。在查询集之外检索此信息不是一种选择,因为我需要使用带注释的字段来对结
我已将我的训练数据分成多个 tf-record 文件,并使用以下代码读取它们: SHUFFLE_BUFFER = 64 PREFETCH = 256 dataset = tf.data.TFRecor
我想使用预取,但我不能让它工作! 这是我的代码: function initAutocompletion() { $("input[data-autocomplete-prefetch-url
PREFETCHNTA 指令基本上用于通过预取器将数据从主存带到缓存,但带有 NT 后缀的指令已知会跳过缓存并避免缓存污染。 那么,PREFETCHNTA 执行的操作与 PREFETCH 指令有何不同
我一直在使用带有脚本标签的 defer 属性,但刚刚发现 对比 最佳答案 它们是两种截然不同的东西。 向浏览器指示将需要某些资源(不一定是 JavaScript)。如果您通过 JavaScript
realize() 和 prefetch() 到底是什么意思? 对于音频文件: InputStream is = getClass().getResourceAsStream("/SMS.mp3");
我想出了以下查询: context['user_artists'] = Artist.objects.filter(users=current_user).all() 再加上模板中的以下用法: {%
这对某些人来说可能是个简单的问题,但我无法弄清楚如何为 SDWebImagePrefetcher 应用 options 属性。 到目前为止,我已将其设置为使用完成 block 获取一些 url SDW
Intel 提供了预取编译指示,很有帮助;例如 #pragma prefetch a for(i=0; i
我是一名优秀的程序员,十分优秀!