Valueerror: Cannot Reshape Array of Size 30470400 into Shape (50,1104,104)

ValueError: cannot reshape array of size 784 into shape (16,16)

Of course, the solution is easier than you think.

ValueError: cannot reshape array of size 784 into shape (16,16).

28 x 28 = 784

Therefore, you need to reshape into the format (28,28) rather than (16,16)

ValueError: cannot reshape array of size 408 into shape (256,256)

You load something from a .mat file, and select the 'face_mask' variable. Without the relevant file we can't examine or recreate that.

    data = loadmat(os.path.join(input_path, name))
render_mask = data['face_mask']

then you load something else (load_mask is unknown), and run the unknown split_segmask function:

    seg_mask = load_mask(os.path.join(mask_path, name))
face_segmask, hairear_mask, _ = split_segmask(seg_mask)

According to the error, face_segmask is (3,136)

    face_remain_mask = np.zeros_like(face_segmask)

resize does not operate in-place, so this does not change face_segmask:


Then you try to reshape it instead. Why (2,204) in the resize, and (256,256) here. resize can change the total number of elements; reshape can't. I think you need to reread the function documentation!

    face_segmask = face_segmask.reshape((256,256))

The error here says face_segmask has 408 elements (flatten view of (3,136)). That's not all the same as 256*256. reshape is NOT a image 'resizer'.

    face_remain_mask[(face_segmask - render_mask) == 1] = 1

your original error go here, with (3,136) (256,256) shapes. What where you imagining would happen here? The arrays don't have any dimensions in common. How's it supposed to do ELEMENT-WISE subtraction. By subtraction we mean 3 - 4 = -1, not some sort of set or image "removal".

I'm not sure you understand array shapes, and specifically why your arrays have shapes they have. And it isn't clear what you trying to do with this subtraction.

I can imagine the (256,256) array representing an image. But what's the (3,136) array? How is that supposed to relate to or map on the (256,256) space. What's the 3 dimension? 3 color channels perhaps? And the 136? indices of some sort?

In your other questions you appear to be processing images, trying perhaps to identify features like 'faces' or 'hair'.

cannot reshape array of size 89401 into shape (299,299,3)

In order to get 3 channels np.dstack:

image = np.dstack([image.reshape(299,299)]*3)

Or if you want only one channel


ValueError: cannot reshape array of size 40000 into shape (1,32,32,3)

If size of image data is 40000 and not equal 1x32x32x3 (One image with width and height, 32 x 32, and RGB format), you reshape it and then got the error.

>>> import numpy as np
>>> a = np.array([1 for i in range(40000)], dtype=np.int8)
>>> a.size
>>> a.reshape((1, 32, 32, 3))
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
ValueError: cannot reshape array of size 40000 into shape (1,32,32,3)
>>> 40000 != 1*32*32*3

You may need to resize image to 32x32 RGB firstly.

ValueError: cannot reshape array of size 0

When reshaping, if you are keeping the same data contiguity and just reshaping the box, you can reshape your data with

data_reconstructed = data_clean.reshape((10,1500,77))

if you are changing the contiguity from one axis to another, you will need to add a permutation of the axes beforehand

Related Topics

Leave a reply