培训期间如何更改批量大小?

Tot*_*tem 5 implementation keras

在训练期间,我想在每个时期更改批次大小(出于实验目的)。创建自定义Callback似乎很合适,但batch_size不是Model该类的成员。

我看到的唯一方法是在每个循环中覆盖fit_loop并公开batch_size回调。有没有更清洁或更快速的方法而不使用回调?

slu*_*und 8

对于在这里登陆的其他人,我发现在 Keras 中进行批量大小调整的最简单方法就是多次调用 fit(使用不同的批量大小):

model.fit(X_train, y_train, batch_size=32, epochs=20)

# ...continue training with a larger batch size
model.fit(X_train, y_train, batch_size=512, epochs=10) 
Run Code Online (Sandbox Code Playgroud)


nur*_*ric 5

我认为最好使用自定义数据生成器来控制传递给训练循环的数据,以便可以生成不同大小的批处理,实时处理数据等。这是一个概述:

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
Run Code Online (Sandbox Code Playgroud)

现在您可以进行训练,model.fit_generator(data_gen(data), steps_per_epoch=100)每个纪元将产生100个批次。如果要将序列封装在类中,也可以使用序列