spams是一種稀疏優化工具箱,可以進行字典學習和矩陣稀疏分解等。提供了matlab、r語言和python三種介面,下邊說一下,在windows系統下的配置。
基本配置環境:matlab 2010a,vs2010和xp系統
2.、將其新增進matlab目錄中。
3、配置mex編譯器,詳見:
4、修改spams配置檔案compile.m
編譯器配置,gcc修改為mex
%%%%%%%%%%%%% compiler configuration %%%%%%%%%%%%%%%%
compiler='mex';
多執行緒配置,因為相容性問題,改為false
%%%%%%%%%%%% multithreading configuration %%%%%%%%%%%%%%
use_multithread=false;
考慮速度問題,將use_64bits_integers設為alse,大矩陣的時候用true。
其他的保持不變。
5、進入matlab命令視窗,輸入compile,進行編譯,會報出一堆warning,作為一名程式設計師,直接無視。
下邊貼一段測試**,**放在test_release資料夾下,詳見
% test_traindl_gj.m:測試mextraindl函式
clcclear
close all
i = double(imread('..\data\lena.png'))/255;
i = imresize(i,0.25);%scale
x = im2col(i,[8,8],'sliding');% extract 8*8 patches
x = x-repmat(mean(x),[size(x,1) 1]);% substract the mean
x = x./repmat(sqrt(sum(x.^2)),[size(x,1) 1]);% normination
param.k = 256; % learn a dictionary with 100 elements
param.lambda = 0.15;
param.numthreads = -1; % number of threads
param.batchsize = 400;
param.verbose = false;
param.iter = 100; %iteration times
ticd = mextraindl(x,param);
t = toc;
fprintf('time of comptation for dictionary learning: %f\n',t);
fprintf('evaluating cost functions ...\n');
alpha = mexlasso(x,d,param);
r = mean(0.5*sum((x-d*alpha).^2)+param.lambda*sum(abs(alpha)));
imd = displaypatches(d);
imagesc(imd);
colormap('gray');
fprintf('objective function: %f\n',r);
最後的測試結果如下:
指標如下
time of comptation for dictionary learning: 13.248159
evaluating cost functions ...
objective function: 0.207007
enfp工具箱怎麼用 隱喻 你的工具箱
分享一些在心理諮詢中好用的隱喻。在幫助家庭學習新的溝通方式時,我喜歡 工具箱 這個隱喻。顧名思義,工具箱裡裝著各種各樣的工具,不同工具適用於不同場合。有些工具你裝備了未必用得上,但你不會嫌工具太多。學習一種新的方式,彷彿就要替換掉舊的方式。他會擔心失去一些東西,喚起取捨的焦慮。比如,教乙個人拒絕別人...
大資料 工具箱
當前,整個網際網路正在從it時代向dt時代演進,大資料技術也正在助力企業和公眾敲開dt世界大門。當今 大資料 一詞的重點其實已經不僅在於資料規模的定義,它更代表著資訊科技發展進入了乙個新的時代,代表著 性的資料資訊給傳統的計算技術和資訊科技帶來的技術挑戰和困難,代表著大資料處理所需的新的技術和方法,...
libsvm工具箱使用
libsvm工具箱安裝 讀入變數利用svmtrain訓練得模型,利用svmpredict訓練得 結果 model svmtrain x norm 6 x norm 1 5 predicted label,accuracy,decision values svmpredict y norm 6 y n...