我有50张大小为1028x1028的图像。我试图通过从50张图像中随机抽取一些补丁来制作字典。

这是我的代码=>

from os import listdir
from time import time
import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
from sklearn.decomposition import MiniBatchDictionaryLearning
from sklearn.feature_extraction.image import extract_patches_2d
from sklearn.feature_extraction.image import reconstruct_from_patches_2d
from sklearn.utils.fixes import sp_version
from sklearn.datasets import load_sample_image
from scipy import ndimage
from skimage import color
from skimage import io
from PIL import Image
from sklearn.decomposition import SparseCoder
from sklearn.decomposition import sparse_encode
from skimage import data,restoration
from scipy.misc import imfilter, imread
from scipy.signal import convolve2d as conv2
import sys
from sklearn.feature_extraction import image


x = []

path = 'resize/'
c=0
for e in listdir(path):
    matrix = np.asarray(Image.open(path+e).convert('L'))
    x.append(matrix)

images = np.array(x)

input = np.asarray(Image.open('H03.bmp').convert('L'))
height , width = input.shape

patchsize = (7,14)
patches = image.PatchExtractor((7,14),10000,10).transform(images)
print(patches.shape)

data = patches.reshape(patches.shape[0], -1)
n_iter = 1000
dico = MiniBatchDictionaryLearning(n_components=100,alpha=3,n_iter=n_iter)

V = dico.fit_transform(data).components_


但在最后一行中,我收到了MemoryError。这是错误=>


  (480000,7,14)
  追溯(最近一次通话):文件“ new.py”,第63行,在
  
  V = dico.fit_transform(data).components_文件“ /usr/local/lib/python3.4/dist-packages/sklearn/base.py”,第494行,在fit_transform中
  
  返回self.fit(X,** fit_params).transform(X)文件“ /usr/local/lib/python3.4/dist-packages/sklearn/decomposition/dict_learning.py”,
  1238行,适合
  
  return_n_iter = True)文件“ /usr/local/lib/python3.4/dist-packages/sklearn/decomposition/dict_learning.py”,
  dict_learning_online中的第677行
  
  random_state = random_state)文件“ /usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py”,
  第364行,位于randomized_svd中
  
  power_iteration_normalizer,random_state)文件“ /usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py”,
  第258行,在randomized_range_finder中
  
  Q,_ = linalg.lu(safe_sparse_dot(A,Q),permute_l = True)文件“ /usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py”,
  第189行,在safe_sparse_dot中
  
  返回fast_dot(a,b)MemoryError


我不知道为什么会收到这个错误?

最佳答案

如评论中所讨论。


  当您基本上用尽内存时,会发生MemoryError。你不
  有足够的内存。您的系统配置是什么?


OP回答:


  我想,您是r8 ....如果我在10张图像周围拍几张图像。然后
  感谢您的帮助,它的工作正常。 –


基本上,用户用完了RAM空间。

08-24 20:54
查看更多