1

I am not sure what I am doing wrong.

The data:

images_generator = ImageDataGenerator()
X_train_images = images_generator.flow_from_dataframe(
    dataframe=dataframe_train,
    directory=None,
    x_col='image_path',
    y_col='target',
    class_mode='raw'
)

dataframe_train.drop("image_path", axis=1, inplace=True)
X_train_tabular = dataframe_train.iloc[:, :-1].values
//scaling etc..
y_train = dataframe_train.iloc[:, -1].values

The model:

# Load the VGG16 model
vgg16 = keras.applications.VGG16(include_top=False, input_shape=(224, 224, 3))
for layer in vgg16.layers:
    layer.trainable = False

image_input = keras.Input(shape=(224, 224, 3), name='image')
tabular_input = keras.Input(shape=(NUM_TABULAR_COLS,), name='tabular')

vgg16_output = vgg16(image_input)
vgg16_output_flat = keras.layers.Flatten()(vgg16_output)

# Combine the flattened VGG16 output and tabular data
combined_inputs = tf.keras.layers.concatenate([vgg16_output_flat, tabular_input])

x = keras.layers.Dense(64, activation='relu')(combined_inputs)
output = keras.layers.Dense(2, activation='softmax')(x)

# Create a model using the inputs and outputs
model = keras.Model(inputs=[image_input, tabular_input], outputs=output)
model.compile(loss='categorical_crossentropy', optimizer='adam')

model.fit(
    [X_train_images, X_train_tabular],
    y_test,
    epochs=2
)

And when I try to fit it I get this exception:

ValueError: Failed to find data adapter that can handle input: (<class 'list'> containing values of types {"<class 'keras.preprocessing.image.DataFrameIterator'>", "<class 'numpy.ndarray'>"}), <class 'numpy.ndarray'>

Not sure how to tackle it since I tried converting to tensors,np array etc. Nothing worked. So now I wonder If I`m doing something essentially wrong.

Newbie
  • 45
  • 7

0 Answers0