Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tensorflow评估和提前终止会产生无穷大溢出误差_Python_Numpy_Tensorflow_Keras_Overflow - Fatal编程技术网

Python tensorflow评估和提前终止会产生无穷大溢出误差

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,如何预防呢?

我在下面的代码中看到了一个模型,但当尝试对其进行评估或使用EarlyStoping时,它会给我以下错误:

    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这似乎出乎意料地解决了问题。谢谢,但为什么一开始它会导致这种情况?