我将向列表中添加3000个np.array,并将列表转换回np.array.np.arrays的维度为(270000,(。在整个循环和np.array转换过程之后,结果数组的维度为:(3000,(,而预期为(3000270000(。奇怪的是,在中途停止过程时,比如在1900个数组中,观察到的形状是(1900270000(,这就是我希望循环结束时输出的形状。
from scipy import misc
from os import walk
labels = []
X=[]
Y=[]
for (_, dirnames, _) in walk(mypath):
labels.extend(dirnames)
for category, label in enumerate(labels):
# print 'Category:',category,'tLabel:',label
for root, dirs, files in os.walk(os.path.abspath(join(mypath,label))):
for file in files:
imagePath=os.path.join(root, file)
face = misc.imread(imagePath)
flattenImgMatrix=misc.imresize(face,[300, 300], interp='nearest').flatten()
X.append(flattenImgMatrix)
Y.append([category])
arrX=np.array(X)
arrY=np.array(Y)
如果没有您的数据,这是不可能解决的。但是,您可以在for
循环中添加一个显式检查来自行调试。这不仅可以确认阵列的形状错误,还可以提供一些有用的信息来隔离它发生的位置:
assert flattenImgMatrix.shape == (270000,), f'Error: {file}: {flattenImgMatrix.shape}'