1
我正在玩scikit-learn庫的詞典學習,我想根據一系列圖像構建詞典。我試圖使用MiniBatchDictionaryLearning
的partial_fit
方法,並且發現它比fit
花費更長的時間。我的代碼看起來(與莉娜爲例):爲什麼「partial_fit」方法比「fit」方法花費的時間要長很多
import numpy as np
from scipy.misc import lena
from sklearn.decomposition import MiniBatchDictionaryLearning
from sklearn.feature_extraction.image import extract_patches_2d
lena = lena()
lena = lena[::2, ::2] + lena[1::2, ::2] + lena[::2, 1::2] + lena[1::2, 1::2]
height, width = lena.shape
patch_size = (7, 7)
data = extract_patches_2d(lena, patch_size)
data = data.reshape(data.shape[0], -1)
dico = MiniBatchDictionaryLearning(n_components=100, n_iter=500,transform_algorithm ='lars', alpha=1,transform_n_nonzero_coefs=5,verbose=1)
dicObj = dico.partial_fit(data)
這需要年齡來完成,而如果我更換partial_fit
與fit
...它需要幾秒鐘。
(我有scikit-learn 15.2)
這是爲什麼?
然後我改變了這個批量大小,但這沒有幫助。 – Ojtwist 2014-10-17 12:08:48
它不會 - 'partial_fit'總是使用整個數據,因爲它認爲它是一個批處理。 – eickenberg 2014-10-17 12:20:48
你可以做的是循環你的數據中的小批量,例如(0,len(data),3):dico.partial_fit(data [i:i + 3])' – eickenberg 2014-10-17 12:22:23