日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

xi'su字典学习

發(fā)布時(shí)間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xi'su字典学习 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄:

  • 目錄:
  • 第一部分 字典學(xué)習(xí)以及稀疏表示的概要
    • 問(wèn)題1:我們?yōu)槭裁葱枰值鋵W(xué)習(xí)?
    • 問(wèn)題2:我們?yōu)槭裁葱枰∈璞硎?#xff1f;
  • 第二部分 稀疏字典學(xué)習(xí)的Python實(shí)現(xiàn)
    • 用Python實(shí)現(xiàn)稀疏字典學(xué)習(xí)需要三個(gè)前提條件
    • 樣例一:圖片的稀疏字典學(xué)習(xí)
  • 參考文獻(xiàn):

第一部分 字典學(xué)習(xí)以及稀疏表示的概要

字典學(xué)習(xí)(Dictionary Learning)和稀疏表示(Sparse Representation)在學(xué)術(shù)界的正式稱謂應(yīng)該是稀疏字典學(xué)習(xí)(Sparse Dictionary Learning)。該算法理論包含兩個(gè)階段:字典構(gòu)建階段(Dictionary Generate)和利用字典(稀疏的)表示樣本階段(Sparse coding with a precomputed dictionary)。這兩個(gè)階段(如下圖)的每個(gè)階段都有許多不同算法可供選擇,每種算法的誕生時(shí)間都不一樣,以至于稀疏字典學(xué)習(xí)的理論提出者已變得不可考。筆者嘗試找了Wikipedia和Google Scolar都無(wú)法找到這一系列理論的最早發(fā)起人。

這里有兩個(gè)問(wèn)題是必須要預(yù)先解釋清楚:

問(wèn)題1:我們?yōu)槭裁葱枰值鋵W(xué)習(xí)?

回答這個(gè)問(wèn)題實(shí)際上就是要回答“稀疏字典學(xué)習(xí) ”中的字典是怎么來(lái)的。做一個(gè)比喻,句子是人類社會(huì)最神奇的東西,人類社會(huì)的一切知識(shí)無(wú)論是已經(jīng)發(fā)現(xiàn)的還是沒(méi)有發(fā)現(xiàn)的都必然要通過(guò)句子來(lái)表示出來(lái)(從某種意義上講,公式也是句子)。這樣說(shuō)來(lái),人類懂得的知識(shí)可要算是極為浩繁的。有人統(tǒng)計(jì)過(guò)人類每天新產(chǎn)生的知識(shí)可以裝滿一個(gè)2T(2048G)大小的硬盤。但無(wú)論有多少句子需要被書(shū)寫,對(duì)于一個(gè)句子來(lái)說(shuō)它最本質(zhì)的特征是什么呢?毫無(wú)疑問(wèn),是一個(gè)個(gè)構(gòu)成這個(gè)句子的單詞(對(duì)英語(yǔ)來(lái)說(shuō))或字(對(duì)漢語(yǔ)來(lái)說(shuō))。所以我們可以很傲嬌的這樣認(rèn)為,無(wú)論人類的知識(shí)有多么浩繁,也無(wú)論人類的科技有多么發(fā)達(dá),一本長(zhǎng)不過(guò)20厘米,寬不過(guò)15厘米,厚不過(guò)4厘米的新華字典或牛津字典足以表達(dá)人類從古至今乃至未來(lái)的所有知識(shí),那些知識(shí)只不過(guò)是字典中字的排列組合罷了!直到這里,我相信相當(dāng)一部分讀者或許在心中已經(jīng)明白了字典學(xué)習(xí)的第一個(gè)好處——它實(shí)質(zhì)上是對(duì)于龐大數(shù)據(jù)集的一種降維表示。第二,正如同字是句子最質(zhì)樸的特征一樣,字典學(xué)習(xí)總是嘗試學(xué)習(xí)蘊(yùn)藏在樣本背后最質(zhì)樸的特征(假如樣本最質(zhì)樸的特征就是樣本最好的特征),這兩條原因同時(shí)也是這兩年深度學(xué)習(xí)之風(fēng)日盛的情況下字典學(xué)習(xí)也開(kāi)始隨之升溫的原因。題外話:現(xiàn)代神經(jīng)科學(xué)表明,哺乳動(dòng)物大腦的初級(jí)視覺(jué)皮層干就事情就是圖像的字典表示。
深度學(xué)習(xí)中一類非常強(qiáng)大的網(wǎng)絡(luò),自編碼機(jī)就是來(lái)源于此,它的效果非常好。
對(duì)自編碼機(jī)感興趣的可以參考這篇:自編碼器

第二部分 稀疏字典學(xué)習(xí)的Python實(shí)現(xiàn)

用Python實(shí)現(xiàn)稀疏字典學(xué)習(xí)需要三個(gè)前提條件

1.安裝NumPy
2.安裝SciPy
3.安裝Python機(jī)器學(xué)習(xí)工具包sklearn
為了避免過(guò)于麻煩的安裝,這里我干脆建議諸位讀者安裝Python的商業(yè)發(fā)行版Anaconda,內(nèi)含python集成開(kāi)發(fā)環(huán)境和數(shù)百個(gè)常用的python支持包。具體安裝過(guò)程和使用細(xì)節(jié)參見(jiàn)我的博客Anaconda debug
Anaconda 安裝

樣例一:圖片的稀疏字典學(xué)習(xí)

這段代碼來(lái)源于Python的Dictionary Learning的官方文獻(xiàn)教材,主要用途是教會(huì)用戶通過(guò)字典學(xué)習(xí)對(duì)圖片進(jìn)行濾波處理。
step1:首先是各種工具包的導(dǎo)入和測(cè)試樣例的導(dǎo)入

#第1行:導(dǎo)入time模塊,用于測(cè)算一些步驟的時(shí)間消耗from time import time# 第3~5行:導(dǎo)入Python科學(xué)計(jì)算的基本需求模塊,主要包括NumPy(矩陣計(jì)算模塊)、SciPy(科學(xué)計(jì)算模塊)和matplotlib.pyplot模塊(畫(huà)圖)。有了這三個(gè)模塊,Python儼然已是基礎(chǔ)版的Matlab。import matplotlib.pyplot as pltimport numpy as npimport scipy as sp# 第7~11行:導(dǎo)入稀疏字典學(xué)習(xí)所需要的函數(shù),下面分行解釋7行:導(dǎo)入MiniBatchDictionaryLearning,MiniBatch是字典學(xué)習(xí)的一種方法,這種方法專門應(yīng)用于大數(shù)據(jù)情況下字典學(xué)習(xí)。當(dāng)數(shù)據(jù)量非常大時(shí),嚴(yán)格對(duì)待每一個(gè)樣本就會(huì)消耗大量的時(shí)間,而MiniBatch通過(guò)降低計(jì)算精度來(lái)?yè)Q取時(shí)間利益,但是仍然能夠通過(guò)大量的數(shù)據(jù)學(xué)到合理的詞典。換言之,普通的DictionaryLearning做的是精品店,量少而精,但是價(jià)格高。MiniBatchDictionaryLearning做的是批發(fā)市場(chǎng),量大不精,薄利多銷。 第8行:導(dǎo)入碎片提取函數(shù)extract_patches_2d。調(diào)用該函數(shù)將一張圖片切割為一個(gè)一個(gè)的pitch。如果一張圖片相當(dāng)于一篇文章的話,那么該函數(shù)的目標(biāo)就是把文章中的每個(gè)句子都找到,這樣才方便提取蘊(yùn)藏在每個(gè)句子中的字。圖片和pitch的關(guān)系如下圖所示: 整張頭像的照片是個(gè)圖片,通過(guò)對(duì)圖片的分割可以將圖片分割為一個(gè)一個(gè)的小塊,也就是一個(gè)個(gè)Pitch。如果對(duì)pitch仍然不了解,只好請(qǐng)你看這個(gè):http://blog.csdn.net/zouxy09/article/details/87754889行:導(dǎo)入圖片復(fù)原函數(shù)reconstruct_from_patches_2d,它可以通過(guò)pitch復(fù)原一整張圖片。 第10行:導(dǎo)入測(cè)試工具nose下的異常拋出函數(shù)SkipTest 第11行:導(dǎo)入SciPy版本檢測(cè)函數(shù)sp_version用于檢測(cè)版本高低,版本低于0.12的SciPy沒(méi)有我們需要的樣本測(cè)試用例from sklearn.decomposition import MiniBatchDictionaryLearningfrom sklearn.feature_extraction.image import extract_patches_2dfrom sklearn.feature_extraction.image import reconstruct_from_patches_2dfrom sklearn.utils.testing import SkipTestfrom sklearn.utils.fixes import sp_versionif sp_version < (0, 12):raise SkipTest("Skipping because SciPy version earlier than 0.12.0 and ""thus does not include the scipy.misc.face() image.")try:from scipy import miscface = misc.face(gray=True)except AttributeError:# Old versions of scipy have face in the top level packageface = sp.face(gray=True)```#第13~15行:檢測(cè)SciPy版本,如果版本太低就拋出一個(gè)異常。程序運(yùn)行結(jié)束 #第16~21行:嘗試打開(kāi)樣本測(cè)試用例,如果打不開(kāi)就拋出一個(gè)異常。step2:通過(guò)測(cè)試樣例計(jì)算字典V # Convert from uint8 representation with values between 0 and 255 to # a floating point representation with values between 0 and 1. face = face / 255.0 # downsample for higher speed face = face[::2, ::2] + face[1::2, ::2] + face[::2, 1::2] + face[1::2, 1::2] face = face / 4.0 height, width = face.shape # Distort the right half of the image print('Distorting image...') distorted = face.copy() distorted[:, width // 2:] += 0.075 * np.random.randn(height, width // 2) # Extract all reference patches from the left half of the image print('Extracting reference patches...') t0 = time() patch_size = (7, 7) data = extract_patches_2d(distorted[:, :width // 2], patch_size) data = data.reshape(data.shape[0], -1) data -= np.mean(data, axis=0) data /= np.std(data, axis=0) print('done in %.2fs.' % (time() - t0)) print('Learning the dictionary...') t0 = time() dico = MiniBatchDictionaryLearning(n_components=100, alpha=1, n_iter=500) V = dico.fit(data).components_ dt = time() - t0 print('done in %.2fs.' % dt) plt.figure(figsize=(4.2, 4)) for i, comp in enumerate(V[:100]):plt.subplot(10, 10, i + 1)plt.imshow(comp.reshape(patch_size), cmap=plt.cm.gray_r,interpolation='nearest')plt.xticks(())plt.yticks(()) plt.suptitle('Dictionary learned from face patches\n' +'Train time %.1fs on %d patches' % (dt, len(data)),fontsize=16) plt.subplots_adjust(0.08, 0.02, 0.92, 0.85, 0.08, 0.23)#left, right, bottom, top, wspace, hspace

“`
第3行:讀入的face大小在0~255之間,所以通過(guò)除以255將face的大小映射到0~1上去
第6~7行:對(duì)圖形進(jìn)行采樣,把圖片的長(zhǎng)和寬各縮小一般。記住array矩陣的訪問(wèn)方式 array[起始點(diǎn):終結(jié)點(diǎn)(不包括):步長(zhǎng)]
第8行:圖片的長(zhǎng)寬大小
第12行:將face的內(nèi)容復(fù)制給distorted,這里不用等號(hào)因?yàn)榈忍?hào)在python中其實(shí)是地址的引用。
第13行:對(duì)照片的右半部分加上噪聲,之所以左半部分不加是因?yàn)榻滩南胍a(chǎn)生一個(gè)對(duì)比的效果
第17行:開(kāi)始計(jì)時(shí),并保存在t0中
第18行:tuple格式的pitch大小
第19行:對(duì)圖片的左半部分(未加噪聲的部分)提取pitch
第20行:用reshape函數(shù)對(duì)data(94500,7,7)進(jìn)行整形,reshape中如果某一位是-1,則這一維會(huì)根據(jù)(元素個(gè)數(shù)/已指明的維度)來(lái)計(jì)算這里經(jīng)過(guò)整形后data變成(94500,49)
第21~22行:每一行的data減去均值除以方差,這是zscore標(biāo)準(zhǔn)化的方法
第26行:初始化MiniBatchDictionaryLearning類,并按照初始參數(shù)初始化類的屬性
第27行:調(diào)用fit方法對(duì)傳入的樣本集data進(jìn)行字典提取,components_返回該類fit方法的運(yùn)算結(jié)果,也就是我們想要的字典V
第31~41行:畫(huà)出V中的字典,下面逐行解釋
第31行:figsize方法指明圖片的大小,4.2英寸寬,4英寸高。其中一英寸的定義是80個(gè)像素點(diǎn)
第32行:循環(huán)畫(huà)出100個(gè)字典V中的字
第41行:6個(gè)參數(shù)與注釋后的6個(gè)屬性對(duì)應(yīng)
運(yùn)行程序,查看輸出結(jié)果:
step3:畫(huà)出標(biāo)準(zhǔn)圖像和真正的噪聲,方便同之后字典學(xué)習(xí)學(xué)到的噪聲相比較

def show_with_diff(image, reference, title):"""Helper function to display denoising"""plt.figure(figsize=(5, 3.3))plt.subplot(1, 2, 1)plt.title('Image')plt.imshow(image, vmin=0, vmax=1, cmap=plt.cm.gray,interpolation='nearest')plt.xticks(())plt.yticks(())plt.subplot(1, 2, 2)difference = image - referenceplt.title('Difference (norm: %.2f)' % np.sqrt(np.sum(difference ** 2)))plt.imshow(difference, vmin=-0.5, vmax=0.5, cmap=plt.cm.PuOr,interpolation='nearest')plt.xticks(())plt.yticks(())plt.suptitle(title, size=16)plt.subplots_adjust(0.02, 0.02, 0.98, 0.79, 0.02, 0.2)show_with_diff(distorted, face, 'Distorted image')

程序輸出如下圖所示:
step4:測(cè)試不同的字典學(xué)習(xí)方法和參數(shù)對(duì)字典學(xué)習(xí)的影響
“`
print(‘Extracting noisy patches… ‘)
t0 = time()
data = extract_patches_2d(distorted[:, width // 2:], patch_size)
data = data.reshape(data.shape[0], -1)
intercept = np.mean(data, axis=0)
data -= intercept
print(‘done in %.2fs.’ % (time() - t0))
transform_algorithms = [
(‘Orthogonal Matching Pursuit\n1 atom’, ‘omp’,
{‘transform_n_nonzero_coefs’: 1}),
(‘Orthogonal Matching Pursuit\n2 atoms’, ‘omp’,
{‘transform_n_nonzero_coefs’: 2}),
(‘Least-angle regression\n5 atoms’, ‘lars’,
{‘transform_n_nonzero_coefs’: 5}),
(‘Thresholding\n alpha=0.1’, ‘threshold’, {‘transform_alpha’: .1})]
reconstructions = {}
for title, transform_algorithm, kwargs in transform_algorithms:
print(title + ‘…’)
reconstructions[title] = face.copy()
t0 = time()
dico.set_params(transform_algorithm=transform_algorithm, **kwargs)
code = dico.transform(data)
patches = np.dot(code, V)
patches += intercept
patches = patches.reshape(len(data), *patch_size)
if transform_algorithm == ‘threshold’:
patches -= patches.min()
patches /= patches.max()
reconstructions[title][:, width // 2:] = reconstruct_from_patches_2d(
patches, (height, width // 2))
dt = time() - t0
print(‘done in %.2fs.’ % dt)
show_with_diff(reconstructions[title], face,
title + ’ (time: %.1fs)’ % dt)
plt.show()

“`
第3行:提取照片中被污染過(guò)的右半部進(jìn)行字典學(xué)習(xí)。
第10~16行:四中不同的字典表示策略
第23行:通過(guò)set_params對(duì)第二階段的參數(shù)進(jìn)行設(shè)置
第24行:transform根據(jù)set_params對(duì)設(shè)完參數(shù)的模型進(jìn)行字典表示,表示結(jié)果放在code中。code總共有100列,每一列對(duì)應(yīng)著V中的一個(gè)字典元素,所謂稀疏性就是code中每一行的大部分元素都是0,這樣就可以用盡可能少的字典元素表示回去。
第25行:code矩陣乘V得到復(fù)原后的矩陣patches
第28行:將patches從(94500,49)變回(94500,7,7)
第32行:通過(guò)reconstruct_from_patches_2d函數(shù)將patches重新拼接回圖片

該程序輸出為四中不同轉(zhuǎn)換算法下的降噪效果:





/70)

參考文獻(xiàn):

1字典學(xué)習(xí)
2稀疏表示

總結(jié)

以上是生活随笔為你收集整理的xi'su字典学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲综合国产精品 | av撸撸在线 | 中文在线免费看视频 | 韩日视频在线观看 | 日本精品在线 | 天天拍天天操 | 四虎国产 | 少妇熟女视频一区二区三区 | www.久久综合 | 四虎综合网 | 色中文网| 午夜日韩在线观看 | 草草影院在线免费观看 | 色婷婷狠狠18禁久久 | 天天天干干干 | 国产精品人妖 | 免费欧美黄色片 | 亚洲天堂视频一区 | 午夜精品久久久久久久91蜜桃 | 青青草老司机 | 欧美在线观看视频一区 | 人妻夜夜爽天天爽 | 老妇女玩小男生毛片 | 午夜丁香网 | 国产亚洲精品久久久久久 | 日韩激情四射 | 爱情岛亚洲首页论坛小巨 | 在线观看午夜视频 | 97视频在线播放 | 亚洲熟女少妇一区二区 | 91在线免费看 | 手机在线免费观看av | 五十路av在线 | 可以看的av网站 | 在线黄色大片 | 草莓视频在线观看18 | jvid乐乐| 国产精品a级 | 国产精品电影 | 日韩无套无码精品 | 欧美大黑b| 好邻居韩国剧在线观看 | 91精品国产色综合久久不卡蜜臀 | av全黄| 伊人久久综合视频 | 九九久久精品 | 成人性毛片 | 人妻少妇被粗大爽9797pw | 国产网站在线免费观看 | 欧美aⅴ视频 | 日本一区视频在线观看 | 日韩欧美一区二区一幕 | 亚洲综合视频一区 | 国产一区二区不卡在线 | 91日韩在线视频 | 综合久久网| 91久久久久久久久久久久 | 东北老女人av | 成年人视频免费看 | 91色视频| 久久在线视频免费观看 | 国语对白永久免费 | 国产97在线观看 | a级片免费网站 | 91爱爱影院 | 6699嫩草久久久精品影院 | 精品人妻大屁股白浆无码 | 欧美精品hd | 日本黄色美女网站 | www在线免费观看 | 91麻豆蜜桃| 成人免费在线 | 亚洲国产成人精品久久 | 成年人免费网站在线观看 | 人妻一区二区视频 | 国产一区亚洲二区三区 | 色婷婷视频在线观看 | 少妇人妻一区二区三区 | 日韩一级二级视频 | 亚洲精品在线视频 | 特级西西444www高清大胆免费看 | 性感美女av在线 | 日av在线播放 | 亚洲一级片在线观看 | 香蕉国产精品视频 | 久久影视av | 精品1区2区3区 | 91在线第一页 | 中文字幕一区二区三区在线播放 | 色www亚洲国产阿娇yao | 噜噜狠狠狠狠综合久久 | 国产黄色免费视频 | 好姑娘在线观看高清完整版电影 | 少妇一级免费 | 欧美 国产 精品 | 国产精品福利视频 | www国产一区 | 午夜污污 | 韩国伦理大片 |