2

I have 50 images of size 1028x1028. I was trying to make a dictionary by taking few patches randomly from 50 images.

here is my code =>

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_

but in the last line I am getting MemoryError. This is the error =>

(480000, 7, 14) Traceback (most recent call last): File "new.py", line 63, in

V = dico.fit_transform(data).components_ File "/usr/local/lib/python3.4/dist-packages/sklearn/base.py", line 494, in fit_transform

return self.fit(X, **fit_params).transform(X) File "/usr/local/lib/python3.4/dist-packages/sklearn/decomposition/dict_learning.py", line 1238, in fit

return_n_iter=True) File "/usr/local/lib/python3.4/dist-packages/sklearn/decomposition/dict_learning.py", line 677, in dict_learning_online

random_state=random_state) File "/usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py", line 364, in randomized_svd

power_iteration_normalizer, random_state) File "/usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py", line 258, in randomized_range_finder

Q, _ = linalg.lu(safe_sparse_dot(A, Q), permute_l=True) File "/usr/local/lib/python3.4/dist-packages/sklearn/utils/extmath.py", line 189, in safe_sparse_dot

return fast_dot(a, b) MemoryError

I don't know why I am getting this error??

10
  • 1
    MemoryError happens when you run out of memory basically. You don't have enough RAM. What is your system configuration? Commented Feb 25, 2017 at 9:36
  • 1
    i3 ,4GB ram... I think its ok to run this program. Commented Feb 25, 2017 at 9:38
  • 1
    ok Mr. @VikashSingh I am taking only 10 image. let see what happen wait a min... Commented Feb 25, 2017 at 9:39
  • Sudip Any updates? Commented Feb 25, 2017 at 9:46
  • 1
    yes ,just a min ... i am trying to run Commented Feb 25, 2017 at 9:47

1 Answer 1

2

As discussed in comments.

MemoryError happens when you run out of memory basically. You don't have enough RAM. What is your system configuration?

OP replied:

I think, you are r8.... if i take few images around 10 images. then its working fine thanks to help. –

Basically user is running out of RAM space.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.