因此,我试图使此自定义生成器正常工作,但似乎有问题。当我尝试使用gen。 next ()时,似乎发电机工作正常,并且正在产生我想要的。但是,它的形状可能与我认为的形状不同。
# Image processing
def preprocess_image(image_path):
img = image.load_img(image_path,target_size=(224,224))
img = image.img_to_array(img)
img = preprocess_input(img)
return img
def image_generator(data,batch_size):
datagen_args = dict(horizontal_flip=True)
datagen = ImageDataGenerator(**datagen_args)
while True:
for i in range(0,len(data) // batch_size):
# get the label and the imagepath
imgpath,label = data[i]
# Process the image
img = preprocess_image(imgpath)
img = datagen.random_transform(img)
#img = np.expand_dims(img,axis=0)
# add a 0 for a dummy variable
dummy_label = np.zeros(len(label))
x_data = np.array([img,label])
yield x_data,dummy_label
# Prepare data need a array [image,label]
X = [] # hold the data before processing
Y = []
IMAGE_DIR = 'dataset/gt_bbox'
for file in os.listdir(IMAGE_DIR):
file_path = os.path.join(IMAGE_DIR,file)
label = int(file.split('_')[0])
X.append(file_path)
Y.append(label)
# Convert to catigorical
Y = to_categorical(Y)
image_dataset = []
for i in range(0,len(X)):
image_dataset.append([X[i],Y[i]])
# Split to train test data
train,val = train_test_split(image_dataset)
BATCHSIZE = 32
imggen = image_generator(train,BATCHSIZE)
valgen = image_generator(val,BATCHSIZE)
model.fit_generator(imggen,steps_per_epoch=1000,epochs=10,validation_data=valgen,validation_steps=300,verbose=1)
我的模型是这样设置的
input_images = Input(shape=(224,224,3),name='input_image') # input layer for images
input_labels = Input(shape=(1,),name='input_label') # input layer for labels
embeddings = base_network([input_images]) # output of network -> embeddings
labels_plus_embeddings = concatenate(axis=-1)([input_labels,embeddings]) # concatenating the labels + embeddings
model = Model(inputs=[input_images,input_labels],outputs=labels_plus_embeddings)
我在构建模型方面可能错了,但对我来说似乎是正确的。
错误消息
ValueError:检查模型输入时出错:传递给模型的Numpy数组列表不是模型预期的大小。预计会看到2个数组,但获得了以下1个数组的列表:[array([[array([[[-0.56078434,-0.52156866,-0.4980392], [-0.56078434,-0.52156866,-0.4980392], [-0.56078434,-0.52156866,-0.4980392], ..., [-0.5764706,-0.545098 ...