是否可以在 keras 中使用动态批量大小?

use*_*018 6 deep-learning keras tensorflow

我查看或编写的 Keras 代码在训练期间具有固定的批大小(即 32、64、128 ......)。我想知道是否有可能具有动态批量大小。(例如,第一次迭代为 104,下一次迭代为 82,下一次为 95,依此类推。)

我目前正在使用 tensorflow 后端。

DJK*_*DJK 4

如果你进行循环训练而不是健身训练,这是可能的。一个例子

from random import shuffle    

dataSlices = [(0,104),(104,186),(186,218)]

for epochs in range(0,10):
    shuffle(dataSlices)
    for i in dataSlices:
        x,y = X[i[0]:i[1],:],Y[i[0]:i[1],:]
        model.fit(x,y,epochs=1,batchsize=x.shape[0])
        #OR as suggest by Daniel Moller
        #model.train_on_batch(x,y)
Run Code Online (Sandbox Code Playgroud)

这假设您的数据是二维 numpy 数组。如果您选择的话,这个想法可以进一步扩展以使用fit_generator()for 循环的代替(请参阅文档)。

  • 您可以使用“train_on_batch”来代替“fit”。(这可能会消除一些开销)。 (2认同)