深度学习笔记8 数据预处理
數據預處理標準流程
(1)灰度圖像具有平穩(wěn)特性,對每個數據樣本分別做均值消減(即減去直流分量)——每個圖像塊,計算平均像素值,并將圖像每個像素點減去均值。每個圖像塊有一個不同的均值。
x=x-repmat(mean(x,1),size(x,1),1);%x是144*10000,代表10000個patch
(2)然后采用PCA/ZCA白化處理,其中的epsilon要足夠大以達到低通濾波的作用。epsilon值如何取,教程上說:
一種檢驗 epsilon 是否合適的方法是用該值對數據進行 ZCA 白化,然后對白化前后的數據進行可視化。如果 epsilon 值過低,白化后的數據會顯得噪聲很大;相反,如果 epsilon 值過高,白化后的數據與原始數據相比就過于模糊。一種直觀上得到 epsilon 大小的方法是以圖形方式畫出數據的特征值,如下圖的例子所示,你可以看到一條”長尾”,它對應于數據中的高頻噪聲部分。你需要選取合適的 epsilon,使其能夠在很大程度上過濾掉這條”長尾”,也就是說,選取的 epsilon 應大于大多數較小的、反映數據中噪聲的特征值。
如原始數據是x
sigma=x*x'./size(x,2); [u,s,v]=svd(sigma); plot(1:size(sigma,1),diag(s));顯示原數據的特征值曲線:
可以看到大約第50個特征值后面的部分要過濾掉,因此,epsilon>=第50個特征值就可以了。
可以取epsilon=0.1080,教程上的代碼給的值是epsilon=0.1,看來這個方法還是很有效的。
(1)對于彩色圖像,色彩通道間并不存在平穩(wěn)特性。因此首先對數據進行特征縮放(使像素值在[0,1]間)。對于圖像[0,255],可將像素值除以255.
(2)對特征進行分量均值歸零化
從下面代碼中可看到是對同一通道的對應像素點(即特征)進行均值歸零。——這屬于特征標準化。
特征標準化:
首先計算每一維度上數據的均值(使用全體數據),之后再每個維度上減去該均值。下一步便是在數據的每一維度上除以該維度上數據的標準差。對于自然圖像,方差歸一化不用進行。
(3)使用足夠大的epsilon來做PCA/ZCA。
——參考linearDecoderExercise.m
執(zhí)行:
plot(1:size(s,1),diag(s))結果:
要濾掉長尾,選第十幾個特征值很合適。可選episilon=s(12,12)=0.0962.練習上給的是epsilon=0.1,看來這個方法還是比較靠譜的。~~呵呵
白化
episilon的選擇就采用上面的方式——濾掉“長尾”。
對基于正交化ICA的模型來說,保證輸入數據盡可能地白化(即協方差矩陣為單位矩陣)非常重要。這是因為:這類模型需要對學習到的特征做正交化,以解除不同維度之間的相關性(詳細內容請參考 ICA 一節(jié))。因此在這種情況下,epsilon 要足夠小(比如 epsilon = 1e ? 6)。
在上例采用epsilon=1e-6時,ZCA后的數據協方差矩陣,圖示:
如果是單位矩陣,就是1對應的一條直線,而現在接近單位矩陣。
例:在linearDecoderExercise.m中,可以看到,把ZCA白化后的patches訓練稀疏自編碼器,保存了 ‘ZCAWhite’, ‘meanPatch’。這樣當后面在有圖像通過該稀疏自編碼器提取特征時,就要和訓練時一樣的白化矩陣和平均值。
總結
以上是生活随笔為你收集整理的深度学习笔记8 数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习笔记7 Working with
- 下一篇: 深度学习笔记9 Sparse codin