Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于辅助数据的Keras图像增强_Python_Image_Machine Learning_Keras_Classification - Fatal编程技术网

Python 基于辅助数据的Keras图像增强

Python 基于辅助数据的Keras图像增强,python,image,machine-learning,keras,classification,Python,Image,Machine Learning,Keras,Classification,我尝试使用两个输入对图像进行分类:1)图像,和2)附加到图像的辅助数据,例如,在将图像大小调整为网络输入之前,图像的原始宽度: input_anci = Input(shape=(1, ), name='extra_input') input_images = Input(shape=(img_width, img_height, 3), name='image_input') vgg_out = base_model(input_images) # Here base_model is a

我尝试使用两个输入对图像进行分类:1)图像,和2)附加到图像的辅助数据,例如,在将图像大小调整为网络输入之前,图像的原始宽度:

input_anci = Input(shape=(1, ), name='extra_input')
input_images = Input(shape=(img_width, img_height, 3), name='image_input')

vgg_out = base_model(input_images)  # Here base_model is a VGG16
f0 = Flatten()(vgg_out)
f0 = Dense(64, activation = 'relu')(f0)
f0 = Dropout(0.5)(f0)

f1 = Dense(8, activation = 'relu')(input_anci)
f01 = Concatenate(axis=-1)([f0, f1])

classidx = Dense(num_classes, activation = 'softmax')(f01)
model = Model(inputs=[input_images, input_anci], outputs=classidx)
为了增强图像,我使用了
ImageDataGenerator

train_datagen = ImageDataGenerator(
        rotation_range = 360,
        width_shift_range = 0.2,
        height_shift_range = 0.2,
        shear_range = 0.2,
        zoom_range = 0.2,
        horizontal_flip = True,
        vertical_flip = True,
        fill_mode = 'nearest',
        validation_split = 0.25)
然后我定义了序列和验证生成器:

train_generator = train_datagen.flow((X, X_anci), Y, subset = 'training')

validation_generator = train_datagen.flow((X, X_anci), Y, subset = 'validation')
然后我使用
fit_generator
来训练模型:

history = model.fit_generator(train_generator,validation_data = validation_generator, ...)
运行时,我收到以下错误消息:

Traceback (most recent call last):
  File "vgg16-v3x.py", line 265, in <module>
    subset = 'training')
  File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\preprocessing\image.py", line 705, in flow
    subset=subset)
  File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\preprocessing\image.py", line 1116, in __init__
    (np.asarray(x).shape, np.asarray(y).shape))
  File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\numpy\core\numeric.py", line 492, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: could not broadcast input array from shape (824,56,56,3) into shape (824)
回溯(最近一次呼叫最后一次):
文件“vgg16-v3x.py”,第265行,在
子集=‘训练’)
文件“C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site packages\keras\preprocessing\image.py”,第705行,在flow中
子集=子集)
文件“C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site packages\keras\preprocessing\image.py”,第1116行,在u init中__
(np.asarray(x).形,np.asarray(y).形)
文件“C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site packages\numpy\core\numeric.py”,第492行,在asarray中
返回数组(a,数据类型,copy=False,order=order)
ValueError:无法将输入数组从形状(824,56,56,3)广播到形状(824)
我该如何确保
(X,X_anci)
以正确的方式输入
[输入图像,输入图像]


另外,这是我第一次发布问题。希望格式不是太糟糕。

您能编辑您的帖子并添加模型架构代码吗?刚刚编辑好。谢谢而
X\u-anci
数组(即
X\u-anci.shape
)的形状是什么?X\u-anci的形状是:(824),因此它起源于
flow
方法。我最好的猜测是,这是由于2.1.6版本中的一个bug造成的。我使用的是2.2.0版,您的代码在我的机器上运行。升级Keras并查看它是否已解决。