【问题标题】:Is it possible to forward the output of a deep-learning network to another network with caffe / pycaffe?是否可以使用 caffe / pycaffe 将深度学习网络的输出转发到另一个网络?
【发布时间】:2016-12-21 04:40:14
【问题描述】:

我正在使用 caffe,或者更可能是 pycaffe 来训练和创建我的网络。我最后有一个带有 5 个标签的数据集。我的想法是为每个标签创建一个网络,它可以简单地说出一个类的分数。在训练了 5 个网络之后,我想比较网络的输出以及哪个网络的得分最高。

遗憾的是,我只知道如何创建一个网络,但不知道如何让它们交互,以及如何在最后做类似 max 函数的事情。我添加一张图片来描述我想做什么。

此外,我不知道这是否会比普通的深层神经网络 有更好的结果。

【问题讨论】:

  • 首先你不能有一个班级的网络,你必须从正面和负面的班级开始。完成此操作后,您可以应用总体平均结果的集成模型。
  • 网络不能告诉我“我有 70% 的把握这是一个苹果”吗?
  • 不,它不能。它只知道它见过苹果。没有调整,因为没有外边界。您是否将其与一类 SVM 混淆了?那是一个不同的模型类。
  • 是的,我可以。那么我能做的是训练一个网络来区分苹果和狗,然后再训练一个网络来区分苹果和猫,以及一个区分狗和猫的网络?
  • 应用集成模型的更好方法。就是在所有类上分别用不同的结构或参数训练5个网络,然后取结果的平均值。值得注意的是,这将提高您的模型精度。

标签: deep-learning caffe pycaffe


【解决方案1】:

我看不出你期望有什么作为这个“max”函数的输入。即使您使用某种 is / is not 边界训练,您的方法似乎也是所有流行框架中可用的 softmax 层的劣质版本。

是的,您可以构建一个多通道模型,使用不同的数据集训练每个通道,然后接受最有把握的预测 - 但结果会花费更长的时间,并且比合作训练通过的准确度更低。您的五个频道在做出其他参数假设之后结束了他们的边界协商。

从一开始就为单个模型提供所有可用信息;你会得到更快的收敛和更准确的分类。

【讨论】:

  • 我遇到的问题是每个类的数据量不同(例如,第 5 类有 771 个样本,但第 1 类有 28 800 个样本),所以我想我可以开始工作了通过这样做来解决这个问题
  • 不要对不平衡的训练示例感到恐慌。先试试看你是否得到了良好的训练。 CNN 的一大优点是它非常擅长处理此类数据集。
  • 我是这么认为的,但不幸的是它没有。只有当简单地使用每个班级的相同数量的数据时,我才能获得更高的分数。但是由于缺乏数据,我现在并没有得到更高的数据,因为网络正在学习它
  • 在这种情况下,是什么让您相信自己可以获得更高的分数?另外,您使用的“高分”指标是什么?分类准确性与其他一些数据集的对比?
  • 我使用的是 kappa 分数。我认为使用更小的网络会变得更好,因此使用更少的权重无法记住它。
猜你喜欢
  • 1970-01-01
  • 2018-12-02
  • 2023-01-28
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2020-05-15
相关资源
最近更新 更多