我刚刚开始在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
...
答案 0 :(得分:0)
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
(即,绝对错误),也可以根本不使用任何指标。