本文以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訓練完成後,用來測試一下當前模型的準確...