【发布时间】:2017-02-20 00:15:14
【问题描述】:
我正在尝试使用Keras 训练神经网络。 我的训练集由数百万个稀疏向量组成。
为了进行训练,我使用了 model.fit() 函数:
model.fit(X_train, y_train, ...)
但是,fit() 对密集数据进行操作。因此,为了使其工作——在向网络提供向量之前——我将它们转换为密集向量。
问题是转换后数据变得太大,不再适合 RAM。
我知道我可以使用batch_generator 来为网络提供数据块。但是,当我这样做时,我得到的结果(在测试集上)比仅在 部分 数据上没有batch_generator 的情况下运行更糟糕(因此它确实适合 RAM)。
我的问题是:有没有办法用稀疏向量训练 Keras 神经网络,而不将它们转换为密集向量?
【问题讨论】:
-
通过生成器拟合应该产生与直接在 x/y 数组上拟合相同的结果。也许您认为更好的结果实际上是过度拟合的情况(在数据的小子集上)。
-
我用另外一套做测试,挺大的。为什么过拟合会在测试集上表现更好?这没有任何意义......
-
您的帖子没有明确说明您是指火车上的性能还是测试集上的性能。另外,
fit()默认情况下会打乱您的数据,请确保您的生成器在某些时候也会这样做。
标签: machine-learning neural-network keras