我有271张具有所有不同尺寸的图像,我希望它们提供给我的cnn模型。让我们先来看一下当我将它们全部调整为50 * 50的大小并且我正在使用以下代码将它们提供给我的cnn模型时:
data_path = "/home/nd/data1/"
data_dir_list = os.listdir(data_path)
img_data_list=[]
for dataset in data_dir_list:
img_list=os.listdir(data_path+'/'+ dataset)
print ('Loaded the images of dataset-'+'{}\n'.format(dataset))
for img in img_list:
input_img=cv2.imread(data_path + '/'+ dataset + '/'+ img,0)
img_data_list.append(input_img)
img_data = np.array(img_data_list)
img_data = img_data.astype('float32')
img_data /= 255
if num_channel==1:
if K.image_dim_ordering()=='th':
img_data= np.expand_dims(img_data, axis=1)
else:
img_data= np.expand_dims(img_data, axis=4)
else:
if K.image_dim_ordering()=='th':
img_data=np.rollaxis(img_data,3,1)
那使img_data=(271,50,50,1) of float32 type
,然后我最终使用model.fit(img_data, y)
。但是当我输入不同大小的图像(编号为271)时,则上述代码(我注释了img_data = img_data.astype('float32')
,因为否则它给出了ValueError: setting an array element with a sequence.
),将img_data设为object = (271,)
(numpy模块的第一个数组对象) ),然后使用mode.fit
会给我带来错误ValueError: Error when checking input: expected conv2d_10_input to have 4 dimensions, but got array with shape (271, 1)
(这里我没有提供完整代码的其他详细信息,因为数据馈送存在问题)
答案 0 :(得分:1)
您的img_data_list
包含不同大小的图像,因此无法将其变成np array
。这是第一个错误的来源。不可能将不同形状的图像批量提供给卷积网络的输入。