2017-04-24 7 views
1

私はcaffeで353の長さのメモリデータ層のラベルを定義したいが、デフォルトの長さが1(batch_size * 1 )。Caffeのメモリデータ層にラベルの寸法を定義する方法

layer { 
    name: "data" 
    type: "MemoryData" 
    top: "data" 
    top: "label" 
    include { 
    phase: TRAIN 
    } 
    memory_data_param { 
    batch_size: 60 
    channels: 3 
    height: 224 
    width: 224 
    } 
} 

この問題を解決するにはどうすればよいですか?

答えて

1

デフォルトでは、1つのメモリレイヤに他のデータとラベルを配置すると、caffeはラベルが単一の整数値(たとえば単一ラベルの分類に使用される)であるとみなします。

ラベルを配列する必要があるなら、あなたは別のデータ層としてラベルを提供する必要があります:

layer { 
    name: "data" 
    type: "MemoryData" 
    top: "data" 
    top: "useless1" 
    include { 
     phase: TRAIN 
    } 
    memory_data_param { 
     batch_size: 60 
     channels: 3 
     height: 224 
     width: 224 
    } 
} 

layer { 
    name: "label" 
    type: "MemoryData" 
    top: "label" 
    top: "useless2" 
    include { 
     phase: TRAIN 
    } 
    memory_data_param { 
     batch_size: 60 
     channels: 1 
     height: 1 
     width: 353 
    } 
} 

そして、Pythonスクリプト内の各トレーニングステップの前に、両方のベクトルを埋める:

numpy.copyto(net.blobs['data'].data, yourdata) #Put here your 60x3x224x224 data array 
numpy.copyto(net.blobs['label'].data, yourlabels) #Put here your 60x1x1x353 label array 
solver.step(1) 
関連する問題