2015-12-13 137 views
2

我開始與Caffe和mnist的例子運行良好。
我的火車和標籤數據爲data.mat。 (我有300個訓練數據,有30個功能,標籤(-1, +1)已保存在data.mat)。如何在caffe中訓練/測試我自己的數據集?

但是,我不太瞭解如何使用caffe來實現我自己的數據集?

有沒有一步一步的教程可以教我?

非常感謝!任何意見,將不勝感激!

回答

2

我認爲將數據從Matlab傳輸到caffe最直接的方法是通過HDF5文件。

首先,使用hdf5write將您的數據保存在HDF5文件中的Matlab中。我假設你的訓練數據被存儲在一個變量名尺寸300按30和標籤存儲在y 300-1矢量的X

hdf5write('my_data.h5', '/X', 
    single(permute(reshape(X,[300, 30, 1, 1]),[4:-1:1]))); 
hdf5write('my_data.h5', '/label', 
    single(permute(reshape(y,[300, 1, 1, 1]),[4:-1:1])), 
    'WriteMode', 'append'); 

注意,數據保存爲4D數組:第一個維度是要素的數量,第二個維度是要素的維度,最後兩個維度是1(不包含空間維度)。另請注意,HDF5中的數據名稱分別爲"X""label" - 這些名稱應該用作輸入數據層的"top"斑點。

爲什麼permute?請參閱this answer以獲得解釋。

您還需要準備一個文本文件,列出您正在使用的所有hdf5文件的名稱(在您的情況下,只有my_data.h5)。文件/path/to/list/file.txt應該有一行

/path/to/my_data.h5

現在你可以輸入數據層到您的train_val.prototxt

layer { 
    type: "HDF5Data" 
    name: "data" 
    top: "X"  # note: same name as in HDF5 
    top: "label" # 
    hdf5_data_param { 
    source: "/path/to/list/file.txt" 
    batch_size: 20 
    } 
    include { phase: TRAIN } 
} 

添加更多信息關於hdf5輸入層,您可以在this answer中看到。

+0

您是否設法使用Caffe在MATLAB上運行網絡培訓? – Royi

+0

@Drazick抱歉,我不會將Matlab和caffe混合使用。 Python界面好得多 – Shai

+0

我看到你回答了很多麻煩的MATLAB用戶,因此我認爲你有一些經驗。它真的好像MATLAB接口是越野車。我有一些在命令行上工作但崩潰MATLAB。 – Royi

相關問題