【问题标题】:Is it possible to have dynamic batchsize in keras?是否可以在 keras 中使用动态批量大小?
【发布时间】:2023-04-02 11:27:01
【问题描述】:

我查看或编写的 Keras 代码在训练期间具有固定的批量大小(即 32、64、128 ...)。我想知道是否可以使用动态批量大小。 (比如第一次迭代 104,下一次迭代 82,下一次迭代 95,以此类推。)

我目前正在使用 tensorflow 后端。

【问题讨论】:

    标签: tensorflow deep-learning keras


    【解决方案1】:

    如果您进行循环训练而不是合身训练,这是可能的。一个例子

    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。 (这可能会消除一些开销)。
    • 谢谢 djk47463 和 Daniel Möller!它有帮助。
    【解决方案2】:

    使用None 设置任何批量大小。特别是this answer 解释它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 2019-04-24
      • 2010-11-08
      相关资源
      最近更新 更多