【问题标题】:Semi-supervised training in KerasKeras 的半监督训练
【发布时间】:2019-06-12 16:24:36
【问题描述】:

我想知道在 Keras 中是否可以使用以下模型,或者是否需要下拉到 tensorflow。

想象一个包含未标记数据的大型数据集,以及一个(可能小得多的)标记数据。

直觉是同时训练两个目标:标记数据的分类准确性和未标记数据的分类置信度。

这个想法是像往常一样将所有数据(标记和未标记)向前运行到最终的 softmax 层。

然后,该批次被分成两组:标记的样本和未标记的样本。

对于标记的数据,误差/损失像往常一样计算,比如交叉熵。 对于未标记的数据,我们选择了分类分布分散的一些函数。一个非常基本的方法是(平均值)1 减去示例的最大值(概率)。

现在将两个“误差”——熵和离散度——相加(受权重超参数影响),这个值是梯度下降中要最小化的值。

换句话说,分散因子作为拟合过程的一种正则化器。

我猜想实现这个 Keras 将涉及自定义损失函数,但我不确定是否拆分批次、将子集与目标匹配等。欢迎提出任何想法。

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    您可以在此处找到 keras 中的半监督模型示例:http://bjlkeng.github.io/posts/semi-supervised-learning-with-variational-autoencoders/

    他所做的是创建两个共享层的模型。一个模型将标记数据作为输入,另一个模型将未标记数据作为输入。

    训练是使用批量训练并交替标记数据和未标记数据完成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 2011-11-09
      • 2017-11-27
      • 2012-10-22
      • 2016-02-06
      • 2017-11-01
      • 1970-01-01
      • 2016-07-24
      相关资源
      最近更新 更多