gpt4 book ai didi

keras - .fit() 层的 shuffle = 'batch' 参数如何在后台工作?

转载 作者:行者123 更新时间:2023-12-04 21:33:23 28 4
gpt4 key购买 nike

当我使用 .fit() 训练模型时层有参数shuffle预设为True。

假设我的数据集有 100 个样本,批大小为 10。当我设置 shuffle = True 时然后 keras 首先随机选择样本(现在 100 个样本具有不同的顺序),并在新订单上开始创建批次:批次 1:1-10、批次 2:11-20 等。

如果我设置 shuffle = 'batch'它应该如何在后台工作?直观地,使用前面的示例,批次大小为 10 的 100 个样本数据集,我的猜测是 keras 首先将样本分配给批次(即批次 1:样本 1-10 遵循数据集原始顺序,批次 2:11-20 遵循数据集的原始顺序也是如此,第 3 批……依此类推),然后打乱批次的顺序。所以模型现在将在随机排序的批次上进行训练,例如:3(包含样本 21 - 30)、4(包含样本 31 - 40)、7(包含样本 61 - 70)、1(包含样本 1 - 10) ), ...(我编排了批次的顺序)。

我的想法是对的还是我错过了什么?

谢谢!

最佳答案

在此查看实现 link (training.py 的第 349 行)答案似乎是肯定的。

试试这个代码来检查:

import numpy as np
def batch_shuffle(index_array, batch_size):
"""Shuffles an array in a batch-wise fashion.
Useful for shuffling HDF5 arrays
(where one cannot access arbitrary indices).
# Arguments
index_array: array of indices to be shuffled.
batch_size: integer.
# Returns
The `index_array` array, shuffled in a batch-wise fashion.
"""
batch_count = int(len(index_array) / batch_size)
# to reshape we need to be cleanly divisible by batch size
# we stash extra items and reappend them after shuffling
last_batch = index_array[batch_count * batch_size:]
index_array = index_array[:batch_count * batch_size]
index_array = index_array.reshape((batch_count, batch_size))
np.random.shuffle(index_array)
index_array = index_array.flatten()
return np.append(index_array, last_batch)


x = np.array(range(100))
x_s = batch_shuffle(x,10)

关于keras - .fit() 层的 shuffle = 'batch' 参数如何在后台工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45567692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com