jon*_*ith 29 machine-learning neural-network theano conv-neural-network keras
我在CNN上工作了几百GB的图像.我已经创建了一个训练功能,可以剔除这些图像的4Gb块并调用fit每个部分.我担心我只训练最后一块而不是整个数据集.
实际上,我的伪代码看起来像这样:
DS = lazy_load_400GB_Dataset()
for section in DS:
X_train = section.images
Y_train = section.classes
model.fit(X_train, Y_train, batch_size=16, nb_epoch=30)
Run Code Online (Sandbox Code Playgroud)
我知道API和Keras论坛说这将训练整个数据集,但我不能直观地理解为什么网络不会重新学习最后一个训练块.
一些帮助理解这将非常感激.
最好,乔
Mak*_*dis 24
对于不适合内存的数据集,Keras文档常见问题部分中有一个答案
您可以使用
model.train_on_batch(X, y)和 进行批量培训model.test_on_batch(X, y).请参阅模型文档.或者,您可以编写一个生成批量训练数据的生成器并使用该方法
model.fit_generator(data_generator, samples_per_epoch, nb_epoch).您可以在我们的CIFAR10示例中看到批量培训的实际应用.
因此,如果您想以您的方式迭代数据集,您应该自己使用model.train_on_batch并处理批量大小和迭代.
还有一点需要注意的是,您应该确保在每个时代之后对您训练模型的样本的顺序进行洗牌.您编写示例代码的方式似乎不会改变数据集.你可以在这里和这里阅读更多关于改组的内容
cur*_*ius 14
问题是在问题#4446的Keras github存储库中提出的:快速问题:模型可以多次适合吗? 它由FrançoisChollet关闭,声明如下:
是的,连续调用
fit将逐步训练模型.
所以,是的,你可以多次调用fit.
| 归档时间: |
|
| 查看次数: |
11943 次 |
| 最近记录: |