关于 tf.keras SGD 批次

问题描述

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

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

这是否意味着 SGD 不支持“在数据集阶段随机打乱示例”?
我检查了新元 source, 好像没有随机shuffle的方法。 我对 SGD 的理解是对随机样本应用梯度下降。
但它只执行带有动量和 nesterov 的梯度下降。

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

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

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

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

解决方法

我不确定这是否是您要查找的内容,但请尝试将 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