2017-04-24 8 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

기본적으로 단일 메모리 계층에 다른 데이터와 레이블을 넣으면 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 
    } 
} 

을 그리고 파이썬 스크립트의 각 훈련 단계 전에 두 벡터 입력 :

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)