0

我想在 tf.keras 中使用 SGD 优化器。但是SGD细节说

梯度下降(带动量)优化器。

这是否意味着 SGD 不支持“在数据集阶段随机洗牌示例”?
我查了SGD源码,好像没有随机shuffle的方法。我对 SGD 的理解是对随机样本应用梯度下降。
但它只使用动量和内斯特罗夫进行梯度下降。

我在代码中定义的批量大小是否代表 SGD 随机洗牌阶段?
如果是这样,它会随机洗牌,但从不使用相同的数据集,不是吗?
我的理解正确吗?

我写了关于批处理的代码如下。

    (x_train, y_train)).shuffle(10000).batch(32)

test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)
4

1 回答 1

0

我不确定这是否是您要查找的内容,但请尝试将 tf.data.Dataset 用于您的数据集。例如,对于 mnist,您可以轻松创建数据集变量,打乱样本并分批划分:

shuffle_buffer_size = 100
batch_size = 10
train, test = tf.keras.datasets.fashion_mnist.load_data()
images, labels = train
images = images/255
dataset = tf.data.Dataset.from_tensor_slices((images, labels))
dataset.shuffle(shuffle_buffer_size).batch(batch_size)

您可以查看有关数据集的教程:td.data

于 2021-01-24T19:03:29.817 回答