'Failed to convert a NumPy array to a Tensor (Unsupported object type float) when training using fit_generator

I got an error when training a model using fit_generator.

Here is the Python generator code:

def get_generator(features, labels,batch_size=1):
    for n in range(int(len(features)/batch_size)):
        yield(features[n*batch_size:(n+1)*batch_size],labels[n*batch_size:(n+1)*batch_size]) 

here is the model:

from tensorflow.keras import Model
from tensorflow.keras.layers import Dense, Input, BatchNormalization

input_shape = (4,)
output_shape = (1,)

model_input = Input(input_shape)
batch_1 = BatchNormalization(momentum=0.8)(model_input)
dense_1 = Dense(100, activation='relu')(batch_1)
batch_2 = BatchNormalization(momentum=0.8)(dense_1)
output = Dense(3, activation='sigmoid')(batch_2)

model = Model([model_input], output)
optimizer = tf.keras.optimizers.Adam(learning_rate=1e-2)
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])

I get an error when I trying to run the generator:

for epoch in range(epochs):
    train_generator = get_generator(training_features,training_labels,batch_size=batch_size)
    validation_generator = get_generator(validation_features,validation_labels,batch_size=10)
    model.fit_generator(train_generator,steps_per_epoch=train_steps,validation_data=validation_generator,validation_steps=1)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source