web-dev-qa-db-fra.com

ValueError: échec de la conversion d'un tableau NumPy en Tensor (type d'objet flottant non pris en charge)

Je suis confronté à un problème avec cette ligne de code dans keras avec le backend Tensorflow 2.0:

loss_out = Lambda(function=ctc_lambda_func, name='ctc', output_shape=(1,))([y_pred, Y_train, X_train_length, label_length])

Y_train, X_train_length sont numpy.ndarrays y_pred et label_length sont de classe 'tensorflow.python.framework.ops.Tensor'

2
neena

Vous pouvez créer des entrées factices

# you have defined the rest of your graph somewhere here

Y_train = Input(shape=...)
X_train_length = Input(shape=...)

loss = Lambda(function=ctc_lambda_func, name='ctc', output_shape=(1,)
              )([y_pred, Y_train, X_train_length, label_length])

# defining the model is slightly different with multiple inputs
training_model = Model(inputs=[image_input, Y_train, X_train_length], outputs=[loss])

Et lorsque vous souhaitez entraîner votre modèle, vous passerez le paramètre x comme une liste de longueur 3, telle que

x = [<images - np.ndarray shape (batch, h, w, c)>, <Y_train inputs - np.ndarray>,
     <X_train_length inputs - np.ndarray>]

Et bien sûr des valeurs factices pour y

y = np.zeros((batch, 1))

Et ça n'a jamais été aussi simple que training_model.train_on_batch(x, y)

Vous pouvez également créer un générateur qui génère x et y sous la forme décrite ci-dessus et utiliser training_model.fit_generator(data_generator)

0
Luke