自定义Datagenerator keras模型需要2个数组,但收到1个

因此,我试图使此自定义生成器正常工作,但似乎有问题。当我尝试使用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 ...

wuqingzixiaozi 回答:自定义Datagenerator keras模型需要2个数组,但收到1个

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3154145.html

大家都在问