【发布时间】:2023-04-02 11:27:01
【问题描述】:
我查看或编写的 Keras 代码在训练期间具有固定的批量大小(即 32、64、128 ...)。我想知道是否可以使用动态批量大小。 (比如第一次迭代 104,下一次迭代 82,下一次迭代 95,以此类推。)
我目前正在使用 tensorflow 后端。
【问题讨论】:
标签: tensorflow deep-learning keras
我查看或编写的 Keras 代码在训练期间具有固定的批量大小(即 32、64、128 ...)。我想知道是否可以使用动态批量大小。 (比如第一次迭代 104,下一次迭代 82,下一次迭代 95,以此类推。)
我目前正在使用 tensorflow 后端。
【问题讨论】:
标签: tensorflow deep-learning keras
如果您进行循环训练而不是合身训练,这是可能的。一个例子
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)。
【讨论】:
train_on_batch 代替fit。 (这可能会消除一些开销)。
使用None 设置任何批量大小。特别是this answer 解释它。
【讨论】: