Keras增量分类培训

时间:2017-12-22 00:43:08

标签: keras

如果我有如下的简单网络:

mod = Sequential()
mod.add(Dense(64, activation='relu', name='input', input_dim=input_size))
mod.add(Dense(64, activation='relu', name='hidden'))
mod.add(Dense(5, activation='softmax', name='output'))

输出5个类别。 如果我按顺序单独训练每个班级,我会重复以下过程:

步骤#1

mod.fit(...) # training file contains data of only class 1
mod.save()
步骤#2

mod.load()
mod.fit(...) # training file contains data of only class 2
mod.save()

我观察到虽然当我尝试使用1级和2级样本进行预测时,权重是从第一次拟合/保存中转移而来的,但它只预测了2级。(看起来忽略了第1类的第一个数据拟合)。 最后,如果我将1级和2级的训练数据加入到单个文件中并训练该文件,那么预测结果是准确的。 这是否意味着对于这样一个简单的网络无法执行所描述的增量训练。如果没有任何关于按照建议进行增量训练的想法?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

一个班级的学生因为没有替代学习而无法学习任何东西

所以 列车文件,包括每个类的样本保存

如果您想使用单个班级培训文件重复培训过程

使用其他类数据项添加一些旧数据以平衡类分发

然后加载已保存的网络

使用这个小数据集,应用转移学习(仅学习分类器层)