我看过或写过的Keras代码在训练期间有固定的批量大小(即32,64,128 ......)。我想知道是否有可能有动态批量大小。 (例如,在第一次迭代中为104,在下一次迭代中为82,在下一次迭代中为95,依此类推。)
我目前正在使用tensorflow后端。
答案 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特别说明了这一点。