3 votes

l'évaluation de tensorflow et l'arrêt anticipé donnent une erreur de dépassement de l'infini

J'ai un modèle tel que vu dans le code ci-dessous, mais lorsque j'essaie de l'évaluer ou d'utiliser earlystopping, je reçois l'erreur suivante :

    numdigits = int(np.log10(self.target)) + 1
OverflowError: cannot convert float infinity to integer

Je dois dire que sans utiliser .EarlyStopping o model.evaluate tout fonctionne bien.

Je sais que np.log10(0) donne -inf Cela pourrait donc être une cause potentielle, mais pourquoi y a-t-il une 0 et comment peut-on l'éviter ? Comment résoudre ce problème ?

NOTES

Voici le code que j'utilise :

import tensorflow as tf
from tensorflow import keras

TRAIN_PERCENT = 0.9

model = keras.Sequential([
    keras.layers.Dense(128, input_shape=(100,), activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(100)
])

earlystop_callback = keras.callbacks.EarlyStopping(min_delta=0.0001, patience=1
                                                   , monitor='accuracy'
                                                   )

optimizer = keras.optimizers.Adam(lr=0.01)
model.compile(optimizer=optimizer, loss="mse", metrics=['accuracy'])

X_set, Y_set = some_get_data_function()
sep = int(len(X_set)/TRAIN_PERCENT)
X_train, Y_train = X_set[:sep], Y_set[:sep]
X_test, Y_test = X_set[sep:], Y_set[sep:]

model.fit(X_train, Y_train, batch_size=16, epochs=5, callbacks=[earlystop_callback])
ev = model.evaluate(X_test, Y_test)
print(ev)

Les ensembles X,Y sont np tableaux. X est un tableau de tableaux de 100 entiers compris entre 0 y 10 . Y est un tableau de tableaux de 100 entiers, tous sont soit 0 o 1 .

2voto

Il est difficile de dire exactement ce qu'il en est, car je ne peux pas exécuter de code sans que cela ne soit nécessaire. some_get_data_function() mais récemment, j'ai obtenu la même erreur lorsque passage par erreur d'un tableau EMPTY a model.evaluate . En tenant compte du fait que le commentaire de @meTchaikovsky a résolu votre problème, il est certainement dû à des tableaux d'entrée erronés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X