私は約101のラベルを持つ各画像を持つデータセットを持っています。私は、データをネットワークに供給するためにHDF5データレイヤーを使用する必要があることを知っています。しかし、問題は、私はマルチタスクセットアップがあるということです。私のネットワークは、最初の5つのレイヤーのパラメータを共有してから分岐します。 101のラベルのうち、1つのタスクに100個のラベルを、2番目のタスクに1個のラベルを送信したいと考えています。マルチタスク設定でマルチラベルデータをHDF5入力としてどのように供給するのですか?
今、どうすればいいですか?
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label1" ############# A scalar label
top : "label2" ######## A vector of size 100
include {
phase: TRAIN
}
hdf5_data_param {
source: "path/to/the/text/file/test.txt"
batch_size: 10
}
}
上記のセットアップでは、2つのトップブロブがあります。 1つは100次元ベクトル(label2
)用、もう1つは残りのラベル(label1
)です。
この種類の設定は可能ですか?
また、prototxtファイル自体の分割仕様を指定する多次元ベクトルを分割することもできます。その場合、私はラベル(101次元)のために単一のトップブロブを使用しなければならず、何とか 101-dベクトルを100-dと1-d(スカラー)の2つのベクトルで分割する必要があります。これはどうすればできますか?
その場合の層が希望:
layer {
name: "data"
type: "HDF5Data"
top: "data"
top : "label" ######## A vector of size 101
include {
phase: TRAIN
}
hdf5_data_param {
source: "path/to/the/text/file/test.txt"
batch_size: 10
}
}
## Some layer to split the label blob into two vectors of 100-d and 1-d respectively
この分割は仕事ができる方法の任意のアイデアを?
はい、可能です。これを見て:http://stackoverflow.com/questions/33140000/how-to-feed-caffe-multi-label-data-in-hdf5-format[1] –