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

时间:2017-11-06 00:45:52

标签: tensorflow deep-learning keras

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

我目前正在使用tensorflow后端。

2 个答案:

答案 0 :(得分:3)

如果你训练一个循环训练而不是训练。一个例子

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)

这将假设您的数据是2d numpy数组。如果您愿意,可以进一步扩展此想法以使用fit_generator()代替for循环(参见docs)。

答案 1 :(得分:0)

使用LetSet()设置任何批量大小。 this answer特别说明了这一点。