问题描述
我想在 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