在训练期间,我想在每个时期更改批次大小(出于experimental的目的)。
创建自定义Callback
似乎合适,但是batch_size
不是Model
类的成员。
我看到的唯一方法是重写 fit_loop
并将batch_size
暴露给每个循环中的回调。有没有更清洁或更快速的方法而不使用回调?
最佳答案
我认为使用自定义数据生成器来控制传递给训练循环的数据会更好,因此您可以生成不同大小的批处理,实时处理数据等。这是一个概述:
def data_gen(data):
while True: # generator yields forever
# process data into batch, it could be any size
# it's your responsibility to construct a batch
yield x,y # here x and y are a single batch
现在,您可以使用
model.fit_generator(data_gen(data), steps_per_epoch=100)
进行训练,每个时期将产生100批。如果您想将Sequence封装在类中,则也可以使用ojit_a。关于keras - 培训期间如何更改批量大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50606995/