使用ReLU激活功能的神经网络

问题描述

我正在尝试使用神经网络来预测房屋价格。这是数据集顶部的样子:

    Price   Beds    SqFt    Built   Garage  FullBaths   HalfBaths   LotSqFt
    485000  3       2336    2004    2       2.0          1.0        2178.0
    430000  4       2106    2005    2       2.0          1.0        2178.0
    445000  3       1410    1999    1       2.0          0.0        3049.0

...

我正在尝试使用ReLU激活功能,但是即使经过100个时间段,我的准确度仍为零。我在这里想念东西吗?

X = dataset[:,1:8] #predictor variables
Y = dataset[:,0] #sell price

#Normalize data
from sklearn import preprocessing
X_scale = min_max_scaler.fit_transform(X)
X_scale

#Split Data
from sklearn.model_selection import train_test_split
X_train,X_val_and_test,Y_train,Y_val_and_test = train_test_split(X_scale,Y,test_size=0.3)
X_val,X_test,Y_val,Y_test = train_test_split(X_val_and_test,Y_val_and_test,test_size=0.5)
print(X_train.shape,X_val.shape,X_test.shape,Y_train.shape,Y_val.shape,Y_test.shape)
  • 实施模式
from keras.models import Sequential
from keras.layers import Dense

model = Sequential(
    Dense(32,activation='relu',input_shape=(7,)))

model.compile(optimizer='sgd',loss='binary_crossentropy',metrics=['accuracy'])

hist = model.fit(X_train,batch_size=32,epochs=100,validation_data=(X_val,Y_val))

model.evaluate(X_test,Y_test)[1]
## Output: 3/3 [==============================] - 0s 3ms/step - loss: -5698781.5000 - accuracy: 0.0000e+00

解决方法

由于您忘记添加输出层,因此您的精度为0,因此损失计算不正确。除此之外,准确性不是一个重要指标,因为您要进行回归而不是分类。

您需要像这样修改模型:

model = Sequential(
    Dense(32,activation='relu',input_shape=(7,)),Dense(1,activation='linear'))

此外,由于要进行回归而不是分类,因此必须在model.compile()中将损失修改为“ mse”而不是“ binary_crossentropy”。

model.compile(optimizer='sgd',loss='mse',metrics=['mean_squared_error'])
,

您也正在解决一个约束问题,

所以您应该使用均方作为损失函数...

并且您还试图预测一个值,因此您应该再增加一层以输出该值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...