Python tensorflow评估和提前终止会产生无穷大溢出误差
我在下面的代码中看到了一个模型,但当尝试对其进行评估或使用EarlyStoping时,它会给我以下错误:Python tensorflow评估和提前终止会产生无穷大溢出误差,python,numpy,tensorflow,keras,overflow,Python,Numpy,Tensorflow,Keras,Overflow,我在下面的代码中看到了一个模型,但当尝试对其进行评估或使用EarlyStoping时,它会给我以下错误: numdigits = int(np.log10(self.target)) + 1 OverflowError: cannot convert float infinity to integer 我必须声明,在不使用.earlystoping或模型的情况下。评估一切都很好 我知道np.log10(0)给出了-inf,所以这可能是一个潜在的原因,但是为什么一开始就有0,如何预防呢?
numdigits = int(np.log10(self.target)) + 1
OverflowError: cannot convert float infinity to integer
我必须声明,在不使用.earlystoping
或模型的情况下。评估一切都很好
我知道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)
十、 Y集是np
数组。X是介于0
和10
之间的100个整数数组的数组。Y是一个由100个整数组成的数组,它们要么是0
要么是1
很难说清楚,因为如果没有一些获取数据的函数()
实现,我就无法运行代码,但最近我遇到了同样的错误,错误地将空数组传递给模型。评估。考虑到@meTchaikovsky comment解决了您的问题,这肯定是由于输入数组混乱造成的。sep
应该是int(len(X_集)*TRAIN_百分比)
@meTchaikovsky这似乎出乎意料地解决了问题。谢谢,但为什么一开始它会导致这种情况?