caffe輸出分類訓練時驗證集識別錯誤的樣本

2021-08-19 23:18:56 字數 1985 閱讀 6892

本文以mnist以及lenet為例

void accuracylayer::forward_cpu(const

vector

*>& bottom,

const

vector

*>& top)

else

}}

void solver::test(const int test_net_id) 

}

$./examples/mnist/train_lenet.sh 2>&1 | tee lenet.log
clear;clc;close all;

fid = fopen('caffe.exe.txt'); % 替換為日誌檔名

tline = fgetl(fid);

c = ; % 定義空矩陣用來存放結果

while ischar(tline)

if ~isempty(strfind(tline, 'batch:')) % 查詢字串

indexline = fgetl(fid);

if ~isempty(strfind(indexline, 'batch:'))

tline = indexline;

elseif

isempty(strfind(indexline, 'index:'))

tline = indexline;

else

% 在tline中解析batch

idx1 = strfind(tline, 'batch:');

batch = str2num(tline(idx1 + 6 : length(tline)));

% 在indexline中解析index,label,output

idx2 = strfind(indexline, 'index:');

idx3 = strfind(indexline, 'label:');

idx4 = strfind(indexline, 'output:');

index = str2num(indexline(idx2 + 6 : idx3 - 2));

label = str2num(indexline(idx3 + 6 : idx4 - 2));

output = str2num(indexline(idx4 + 7 : length(indexline)));

% 新增到陣列中

c = [c; batch, index, label, output];

endelse

tline = fgetl(fid);

endendfclose(fid);

% 視覺化部分

image_file_name = 't10k-images.idx3-ubyte';

fid = fopen(image_file_name);

images_data = fread(fid, 'uint8');

fclose(fid);

images_data = images_data(17:end);

image_buffer = zeros(28, 28);

for k = 1:1:size(c,1)

figure(size(c,1));

index = c(k,1) * 100 + c(k,2);

image_buffer = reshape(images_data((index) * 28 * 28 + 1 : (index + 1) * 28 * 28), 28, 28);

subplot(10, 10, k);

imshow(uint8(image_buffer)'); % 轉置

title(sprintf('

%d->%d', c(k,3), c(k,4))); % label -> output

end

訓練集 驗證集 訓練 驗證 測試集

注意事項 1.訓練 驗證 測試集必須分布相同,比如收集如下幾個區域的使用者資料,在分割訓練 驗證 測試集的時候不能將us uk用於訓練,india 驗證,china 測試,這樣的話由於各個地區分布不同,產生的結果也不好。更明智的做法是每個地區的資料單獨分割訓練 驗證 測試集,保證資料同一分布。2.驗...

訓練集 驗證集 測試集

訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...

訓練集,驗證集,測試集

普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。超引數是指訓練開始之前設定的引數,不在梯度下降的更新範圍內,比如網路層數 網路節點數 迭代次數 學習率等等 1.訓練集 確定模型後,用於訓練普通引數 2.驗證集 交叉驗證集cv 驗證集在每個epoch訓練完成後,用來測試一下當前模型的準確...