Caffeの新機能です。私がやっていることは、2つのデータセット(車と花)のための一連の機能があることです。Caffeで完全に接続されたレイヤーをトレーニングするときに学習していないネットワーク
- 各画像サンプルの特徴サイズは256-Dです。
- トレーニングセット:500枚のカー画像1200枚の花画像
- 試験セット:100のカー画像200枚のフラワー画像
基本的に、問題は、バイナリ分類問題です。次のように私のカフェtrain.prototxtファイルは次のとおりです。
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
hdf5_data_param {
source: "train.txt"
batch_size: 40
}
include {
phase: TRAIN
}
}
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
hdf5_data_param {
source: "test.txt"
batch_size: 10
}
include {
phase: TEST
}
}
layer {
name: "fc1"
type: "InnerProduct"
bottom: "data"
top: "fc1"
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 1
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "sigmoid1"
type: "Sigmoid"
bottom: "fc1"
top: "sigmoid1"
}
layer {
name: "fc2"
type: "InnerProduct"
bottom: "sigmoid1"
top: "fc2"
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 1
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "sigmoid2"
type: "Sigmoid"
bottom: "fc2"
top: "sigmoid2"
}
layer {
name: "fc3"
type: "InnerProduct"
bottom: "sigmoid2"
top: "fc3"
inner_product_param {
num_output: 2
weight_filler {
type: "gaussian"
std: 1
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc3"
bottom: "label"
top: "accuracy"
include {
phase: TEST
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc3"
bottom: "label"
top: "loss"
}
私はHDF5層を使用してデータを読み込み、シグモイドの活性化関数と256-256-2の3-完全に接続されている層に渡しています。 (私もReLUに変わったが、結果は変わらなかった)。
The solver prototxt is:
net: "train.prototxt"
test_iter: 100
test_interval: 200
base_lr: 0.010
momentum: 0.9
weight_decay: 0.00005
lr_policy: "inv"
gamma: 0.00001
delta: 1e-8
#test_compute_loss: true
power: 0.75
display: 100
#stepsize: 1000
max_iter: 10000
snapshot: 10000
snapshot_prefix: "sample"
solver_mode: GPU
問題は、ネットが何も学習していないという事実のためにこのアーキテクチャが動作していないということです。
このプロットは、構成上何も起こっていないことを明確に示す最初の500回の反復の精度プロットを示しています。
データセットかどうかをテストするには、機能が、私はLIBSVM上の機能を使用して線形SVMを訓練し、それは84%の精度で動作します間違っていないです。
おそらく、私のネットワーク設定が正しくない可能性があります。おかげ
--------------------
アップデート:私は、次のプロットを得るようPReLUを使用。 num_outputを256から128に減らしました。
あなたはオーバーフィットです。パラメータが非常に多く、例があまりにも少ないです。 – Shai
重さを意味するパラメータが多すぎますか? –
また、シグモイドを使用しないで、代わりにReLUを使用してください。 –