keras回归模型的奇怪输出

2024-06-16 14:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

data

我刚开始用Keras做回归模型。我尝试了自己的照片,但我得到了损失作为Nan和准确度为零的输出。有人能解释为什么吗?你知道吗

data=pd.read_excel('Data.xlsx',sheet_name=2)
data.head(2)
features=data.drop('PRHP',axis=1)
labels=data['PRHP']
# Normalizing data:
m_features=features.mean(axis=0)
m_labels=labels.mean(axis=0)
std_features=features.std(axis=0)
std_labels=labels.std(axis=0)
nor_features=(features-m_features)/std_features
nor_labels=(labels-m_labels)/std_labels
# Build Model:
model=Sequential([Dense(12,input_shape=(7,),activation='linear'),Dense(1,activation='linear')])
model.summary()
model.compile(adam(lr=0.01),loss='mean_squared_error',metrics=['accuracy'])
model.fit(nor_features,nor_labels, batch_size=10, epochs=10, shuffle=True,verbose=2)

输出:

Epoch 1/10
 - 0s - loss: nan - acc: 0.0000e+00
Epoch 2/10
 - 0s - loss: nan - acc: 0.0000e+00
Epoch 3/10
 - 0s - loss: nan - acc: 0.0000e+00
Epoch 4/10
 - 0s - loss: nan - acc: 0.0000e+00
...

Tags: datalabelsmodelnanmeanactivationdenseacc
1条回答
网友
1楼 · 发布于 2024-06-16 14:15:07

nan丢失的原因之一是训练数据本身中存在nan值。如果原始数据中有任何nan值,请尝试用一些值填充它们或完全删除它们对应的行样本。否则,如果原始数据中没有丢失的数据,因为您正在通过除以std进行规范化,可能std的值为零,因此导致除以零。为防止出现这种情况,请在执行除法时添加一个小常量:

nor_features = (features-m_features) / (std_features + 1e-7)
nor_labels = (labels-m_labels) / (std_labels + 1e-7)

至于准确度为零,您必须记住Keras中的'accuracy'度量仅用于分类问题。在这里,因为您正在进行回归,所以使用'accuracy'作为度量是毫无意义的。相反,您可以使用其他度量,如mae(即平均绝对误差),或者根本不使用任何度量。你知道吗

相关问题 更多 >