我在使用TensorFlow运行一个流失模型时遇到了NaN损失。经过查阅,我发现我的数据中可能包含一些NaN值,这一点通过print(np.any(np.isnan(X_test)))
得到了确认。
我尝试使用以下代码:
def standardize(train, test): mean = np.mean(train, axis=0) std = np.std(train, axis=0)+0.000001 X_train = (train - mean) / std X_test = (test - mean) /std return X_train, X_test
但仍然出现了NaN值。
如果有帮助,这里是完整的代码:
回答:
你还没有替换nan
值。并且你的数据中可能还包含一些inf
和-inf
值。你可以将它们都替换为0
。
对于数据框
X.replace([np.inf, -np.inf], np.nan, inplace=True)X = X.fillna(0)
或者如果你的数据是numpy数组
X[np.isnan(X)] = 0X[X == np.inf] = 0 X[X == -np.inf] = 0