擅长:python、mysql、java
<p>对<code>fit</code>的每次调用都会重新初始化模型,并忘记之前对<code>fit</code>的任何调用:这是scikit learn中所有估计器的预期行为。在</p>
<p>我认为在循环中使用<code>partial_fit</code>是正确的解决方案,但您应该在小批量上调用它(正如fit方法中所做的那样,默认的batch_size值仅为3),然后仅计算每100或1000次调用<code>partial_fit</code>的开销,例如:</p>
<pre><code>batch_size = 3
n_epochs = 20
n_batches = X.shape[0] // batch_size
print(n_batches) # 596
n_updates = 0
for epoch in range(n_epochs):
for i in range(n_batches):
batch = patches[i * batch_size:(i + 1) * batch_size]
dico.partial_fit(batch)
n_updates += 1
if n_updates % 100 == 0:
img_r = reconstruct_image(dico, dico.components_, patches)
err = np.sqrt(np.sum((img - img_r)**2))
print("[epoch #%02d] Err = %s" % (epoch, err))
</code></pre>