【问题标题】:Single Label Regression(Finetuning) With Input Artificial Features In Caffe咖啡厅输入人工特征的单标签回归(微调)
【发布时间】:2016-04-06 19:20:08
【问题描述】:

我有,比如说,n 图像,对于每个图像,我都有额外的 2 个人工(虚构)特征,并且图像标签是一维整数。

我想在我的数据集上微调 Image-net,但我不知道如何处理这两个附加特征作为输入,我应该如何将数据提供给 caffe?请帮忙!

编辑:这 2 个特征可以是任意 2 个数字(一维),表示两个数字代表图像属于哪个类,以及有多少个图像属于该类。

假设我有“cat.jpg”,那么特征是 5 和 2000,其中 5 是代表类别的特征 1,而 2000 是该类别中的总图像。 简而言之,这2个特征可以是任意两个整数。

【问题讨论】:

  • @Shai,你能帮帮我吗?
  • 你的两个功能是 4096 暗淡的吗?你的问题不清楚。
  • 好的,我将编辑问题以使我的问题更清楚。 4096 的事情只是为了更好地理解我的问题的一个例子。
  • @Shai,我已经进行了编辑,你现在明白我的问题了吗?顺便说一句,感谢您的回复!
  • 所以你有 n 个图像作为输入,还有两个 n × 1 的额外输入用于训练?

标签: matlab neural-network regression caffe conv-neural-network


【解决方案1】:

我认为对您来说最直接的方法是使用"HDF5Data" 输入层,您可以在其中存储输入图像、额外的两个“特征”和预期的输出值(用于回归)。

您可以看到一个示例here 用于在 python 中创建 HDF5 数据。可以在here 找到一个 Matlab 示例。

您的 HDF5 应该有 4 个“数据集”:一个是输入图像(或 dim 4096 的图像描述符)。 n 图像/描述符的维数组。
另一个数据集是 "feat_1"n 由 1 个数组组成,"feat_2"n 由 1 个数组组成。
最后,您应该有另一个输入 "target"n,由 1 个您希望学习的预期输出数组组成。

一旦您准备好包含这些数据集的 HDF5 文件,您就应该拥有

layer {
  type: "HDF5Data"
  top: "data" # name of dataset with images/imagenet features
  top: "feat_1"
  top: "feat_2"
  top: "target"
  hdf5_data_param {
    source: "/path/to/list/file.txt"
  }
}

如您所见,单个"HDF5Data" 层可以产生多个“顶部”。

【讨论】:

  • 我在某处读到我必须使用连接层,不是吗?
  • @Deven 是的,如果你想将 imagenet 特征、feat_1 和 feat_2 提供给同一个 InnerProduct 层,你需要使用 Concatenation 层。
  • 我在这里有点超出我的深度,我不知道我是否应该将它们提供给同一个 InnerProduct 层。请解释一下。
  • @Deven 我不能为你打这个电话。最终,为了产生单个输出,您应该将所有输入合并到单个分类/回归层(通常是 InnerProduct 层)。但是,在进行预测之前,您可能希望通过一个或多个隐藏层传递您的输入,不过...
  • 为了给你更多信息,我只是修改了 flickr 风格的微调示例,并进行了一些小的修改(如回归的欧几里德损失)。我现在要做的是修改数据层(如您所说)并仅添加一个连接层(在 IP 层之前),我在这里会做错什么吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2019-11-30
  • 2012-11-27
  • 2013-10-20
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多