张量流评估和早期停止给出无穷大溢出错误

Ari*_*ael 7 python numpy overflow keras tensorflow

我的模型如下面的代码所示,但是当尝试评估它或对其使用早期停止时,它会给出以下错误:

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

我必须声明,不使用.EarlyStoppingmodel.evaluate一切正常。

我知道这np.log10(0)可能-inf是一个潜在的原因,但为什么0首先会出现这种情况,如何预防呢?如何解决这个问题?

笔记

这是我使用的代码:

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)
Run Code Online (Sandbox Code Playgroud)

X,Y 集合是 np数组。0X 是由 100 个介于和 之间的整数组成的数组组成的数组10。Y 是一个由 100 个整数组成的数组,它们都是01

Tim*_*sev 9

好吧,很难确切地说,因为我无法在没有some_get_data_function()意识到的情况下运行代码,但最近当我错误地将 EMPTY 数组传递model.evaluate. 考虑到 @meTchaikovsky 评论解决了您的问题,这肯定是由于输入数组混乱所致。