为什么“部分拟合”方法比“拟合”方法耗时更长

2024-09-28 23:49:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩scikit学习库的字典学习,我想建立一个基于图像序列的字典。我尝试使用partial_fitMiniBatchDictionaryLearning方法,并注意到它比fit要长得多。我的代码看起来如何(以lena为例):

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学习15.2)

为什么会这样?在


Tags: fromimportdatasize字典extractsklearnscikit
1条回答
网友
1楼 · 发布于 2024-09-28 23:49:14

这很可能是因为partial_fit是要对小批量数据调用的。在

方法fit实际上与partial_fit相同,它调用一个在线词典学习函数。区别在于fit使用对象构造时指定的批处理大小,默认情况下为3,而{}则处理您提供的完整数据(如果您提供的样本太多,这可能需要很长时间)。partial_fit不是为此而设计的)。在

Here是函数,因此您可以看看发生了什么。在

相关问题 更多 >