Python 呼唤;安装发电机();多次使用Keras

Python 呼唤;安装发电机();多次使用Keras,python,tensorflow,keras,deep-learning,computer-vision,Python,Tensorflow,Keras,Deep Learning,Computer Vision,我有一个生成器函数,它生成(输入、目标)的元组,并使用Keras中的fit\u generator()方法对我的模型进行训练 我的数据集被分成9个相等的部分。我希望使用fit\u generator()方法对数据集执行遗漏交叉验证,并保持先前培训的学习参数不变 我的问题是,在模型上多次调用fit_generator()是否会使其重新学习先前序列和验证集上的学习参数,还是会保持这些学习参数不变,从而提高准确性 经过一点挖掘,我发现Keras中的fit()方法保留了此处学习到的参数,但我不确定fit

我有一个生成器函数,它生成(输入、目标)的元组,并使用Keras中的
fit\u generator()
方法对我的模型进行训练

我的数据集被分成9个相等的部分。我希望使用
fit\u generator()
方法对数据集执行遗漏交叉验证,并保持先前培训的学习参数不变

我的问题是,在模型上多次调用
fit_generator()
是否会使其重新学习先前序列和验证集上的学习参数,还是会保持这些学习参数不变,从而提高准确性

经过一点挖掘,我发现Keras中的
fit()
方法保留了此处学习到的参数,但我不确定
fit\u generator()
是否也会发生同样的情况,如果是,它是否可以用于数据的交叉验证

为了实现交叉验证,我正在考虑实现的伪代码如下:

类数据集生成器(序列):
定义初始化(验证id,模式):
#一些代码
def\uuu getitem\uuuu():
#生成函数
#一些代码
返回(输入、目标)
对于范围(9)内的id:
列车组=数据集生成器(id,‘列车’)
#列车组包含所有8个部件,留下id部件进行验证。
验证集=数据集生成器(id为“val”)
#val_集合包含id部分。
历史记录=模型拟合发生器(序列集,历元=10,每历元步数=24000,验证数据=val历元集,验证步骤=3000)
打印('History Dict:',History.History)
结果=模型。评估发电机(测试集,步骤=步骤)
打印('测试损失,附件:',结果)

模型
是否会保持学习到的参数不变,并在
for
循环的每次迭代中对其进行改进?

fit
fit\u生成器
在这方面表现相同,再次调用它们将从先前训练的权重恢复训练


还要注意的是,您试图做的不是交叉验证,至于真正的交叉验证,您为每个折叠训练一个模型,并且这些模型完全独立,而不是从上一个折叠的训练中继续。

据我所知,它将保留先前训练的参数。另外,我认为可以通过修改Sequence的on_epoch_end()方法来完成您想要做的事情。可能是这样的:

class DatasetGenerator(Sequence):
    def __init__(self, id, mode):
        self.id = id
        self.mode = mode
        self.current_epoch=0
        #some code

    def __getitem__(self, idx):
        id = self.id
        #Some code
        return (inputs, targets)

    def on_epoch_end():
        self.current_epoch += 1
        if self.current_epoch % 10 == 0:
            self.id += 1

是的,无论目前的体重是多少,他们都会接受训练。在重新编译之前调用
keras.backend.clear_session()
会将所有权重清除回初始状态。何时要重置权重?此外,因为我以前没有读过这篇文章:在每一个折叠上都必须训练一个独立的模型?执行CV后,它们将如何融化为一个模型?