對於我的一個項目,我對Caffe感興趣,並且更加深入地學習。幾個小時後,我設法將Caffe安裝在我的電腦上。我現在試圖讓我們做到這一點。Caffe C++在輸入圖層中設置數據
所以我已經加載了網絡如下:
std::string model_file = "/home/CXX/Desktop/caffemodel/deploy.prototxt";
std::string trained_file = "/home/CXX/Desktop/caffemodel/modelWeights.caffemodel";
Caffe::set_mode(Caffe::CPU);
boost::shared_ptr<Net<float>> net_;
net_.reset(new Net<float>(model_file, TEST));
net_->CopyTrainedLayersFrom(trained_file);
加載的網絡和權重是不是我的。請找到輸入層和輸出層的結構如下:
name: "simple_conv-dense"
input: "data"
input_dim: 1
input_dim: 1
input_dim: 250
input_dim: 250
layer {
name: "conv1"
bottom: "data"
type: "Convolution"
top: "conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
的輸入是一個單一的250 * 250的深度(0之間歸一化值和1)「圖像」。預處理已經完成,我的數據存儲在一個Matrix(個人圖書館,指向std :: vector元素的指針)中,以便您可以像2D數組(數據[i] [j])那樣訪問它
網絡的輸出被以該順序組成:[NbBlob] [NbClass] [outHeight] [outWidth],在我的情況給予[1] [46] [250] [250]
我有已經編寫的代碼來檢索輸出:
Blob<float>* output_layer = net_->output_blobs()[0];
const float* begin = output_layer->cpu_data();
for (int k = 0; k < 46; k++)
for (int h = 0; h < 250; h++)
for (int w = 0; w < 250; w++){
currentprob = *(begin + ((k * 250 + h) * 250 + w));
此代碼已被選中,和總結了逐像素46類predections,明顯賦予1作爲用於單個像素的結果。
我的問題是,我不知道如何在網絡中提供我的數據。我首先通過該方法檢索輸入層:
Blob<float>* input_layer = net_->input_blobs()[0];
從調試器,我知道input_layer具有屬性名爲capacity_其具有預期值(62 500,作爲250 * 250)。
所以這裏是我的問題:如何將他的數據輸入到輸入層?我花了很多時間看自己,但我不知道該往哪裏看。
請注意,我沒有使用OpenCV,而且我幾乎沒有任何深度學習背景(學士學位)。
謝謝你花時間幫助我。任何形式的幫助(文檔,僞代碼,代碼,解釋)都非常受歡迎。 PS:使用命名空間caffe;使用命名空間caffe;使用命名空間caffe;使用命名空間caffe;使用命名空間caffe;使用命名空間caffe;
編輯:增加了更多的輸入圖層信息。錯別字。
更換嵌套循環有一個Q&A [SO:使用C++在CAFFE中設置輸入層](https://stackoverflow.com/q/38637053/7478597)。 – Scheff
@Scheff感謝您的回答。我之前看到過這個問題,並且認爲它不夠接近我的情況(我不是從通常的圖像格式加載,而是從二進制文件加載)。然而,我看着它,並看到MemoryDataLayer是我需要從可用的輸入層。我更新了CNN輸入部分,因爲我認爲我意識到了一些東西(這正是我的原型文本的第一行)。所有者離開第一行一般,以便可以爲他的案例定義最合適的輸入圖層,對吧? 另外,我不能達到caffe :: MemoryDataLayer,只有caffe :: MemoryDataParameter – Antoine
我GOOGLE了一下,偶然發現['caffe :: MemoryDataLayer'](http://caffe.berkeleyvision.org/tutorial/layers/memorydata。 HTML)。此外,還有一個[帶有MemoryData輸入的Caffe C++ helloworld示例](https://medium.com/@shiyan/caffe-c-helloworld-example-with-memorydata-input-20c692a82a22)。 – Scheff