7

在自回归连续问题中,当零点过多时,可以将这种情况视为零膨胀问题(即 ZIB)。换句话说,f(x)我们想要拟合我们想要逼近g(x)*f(x)f(x)函数,而不是拟合 ,即y,并且g(x)是一个输出0到1之间的值的函数,具体取决于值是零还是非零。

目前,我有两个模型。一个给我g(x)的模型和另一个适合的模型g(x)*f(x)

第一个模型给了我一组权重。这是我需要你帮助的地方。我可以将sample_weights参数与model.fit(). 当我处理大量数据时,我需要使用model.fit_generator(). 不过,fit_generator()没有论据sample_weights

有什么办法可以在sample_weights里面工作fit_generator()吗?g(x)*f(x)否则,知道我已经有一个训练有素的模型,我怎么能适应g(x)

4

1 回答 1

12

您可以提供样本权重作为生成器返回的元组的第三个元素。来自 Keras 文档fit_generator

生成器:生成器或Sequence( keras.utils.Sequence) 对象的实例,以避免在使用多处理时出现重复数据。生成器的输出必须是

  • 一个元组(inputs, targets)
  • 一个元组(inputs, targets, sample_weights)

更新:这是一个生成器的粗略草图,它返回输入样本和目标以及从模型获得的样本权重g(x)

def gen(args):
    while True:
        for i in range(num_batches):
            # get the i-th batch data
            inputs = ...
            targets = ...
            
            # get the sample weights
            weights = g.predict(inputs)
            
            yield inputs, targets, weights
            
            
model.fit_generator(gen(args), steps_per_epoch=num_batches, ...)
    
    
于 2018-11-29T13:16:26.150 回答