如何在Tensorflow 2中实现小批量梯度下降?

我对机器学习和 Tensorflow 比较陌生,我想尝试在 MNIST 数据集上实现小批量梯度下降。但是,我不确定应该如何实施它。

(旁注:训练图像(28px x 28px)和标签存储在 Numpy 数组中)

目前,我可以看到两种不同的实现方式:

  1. 我的训练图像位于 [60000,28,28] 的 Numpy 数组中。将其重塑为 [25(批次数)、2400(批次中的图像数)、28,28],然后使用 for 循环调用每个批次并将其传递给 model.compile() 方法。我对这种方法唯一担心的是 for 循环本质上很慢,而矢量化实现会快得多。

  2. 将图像和标签组合成一个tensorflow数据集对象,然后调用Dataset.batch()方法和Dataset.prefetch()方法,然后将数据传递给model.compile()方法。唯一的问题是我的数据不会保留为 Numpy 数组,我认为它比张量流数据集对象具有更大的灵活性。

这两种方法中哪一种最适合实施,或者是否有我不知道的第三种最佳方法?


慕的地6264312
浏览 126回答 1
1回答

湖上湖

Keras 的 model.fit 方法有一个内置的 batch_size 参数(因为您用 keras 标记了这个问题,所以我假设您正在使用它)。我相信这可能是实现您正在寻找的目标的最佳优化方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python