为 Keras ANN-线性回归选择层/函数

Posted

技术标签:

【中文标题】为 Keras ANN-线性回归选择层/函数【英文标题】:Picking layers/functions for Keras ANN- Linear Regression 【发布时间】:2020-02-23 04:09:36 【问题描述】:

当我运行线性回归 ANN(预测加州房价)时,我得到了大量的损失数字和 0 准确度。任何人都可以为此类问题建议任何更好的激活函数。

https://drive.google.com/file/d/1dcUuTVVDGwxHn2O5qqJk0wgiEf83MslN/view?usp=sharing

我尝试了从 0.1 到 10 的损失率的多次迭代,尝试了 2 层 ReLU 3 个中子,尝试将 epoch 增加到 10K,尝试了 softmax。

from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam


model = Sequential()
model.add(Dense(2, input_shape=(6,), activation='relu'))
model.add(Dense(3, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.add(Dense(1, activation='linear'))
model.compile(Adam(lr=0.5),
          loss='mean_squared_error',
          metrics=['accuracy'])


model.fit(X_train, y_train, epochs=10000, verbose=2,     validation_split=0.4)

60/10000 纪元 - 1s - 损失:48621637708.0739 - acc:0.0000e+00 - val_loss:49522900789.2154 - val_acc:0.0000e+00

【问题讨论】:

【参考方案1】:

您在这里遗漏了一些关于深度学习的基本知识。准确度是用于分类的指标,但您要做的是回归,即不预测类别标签而是预测连续值。深度学习领域有两种不同的东西。因此,softmax 作为输出层不会对您有太大帮助。在这种情况下,您的指标也应该是 MSE。

高于 1.0 的学习率也非常少见,Adam 的默认值为 0.001。一般来说,如果您不确定学习率,请坚持使用默认值。所以也许错误就在那里,尝试降低学习率并再试一次。

Softmax 激活作为中间层激活也不常见,我建议用 ReLU 替换它。您使用的神经元数量也非常少,多加几个也会有所帮助。

【讨论】:

谢谢 :) 进行了更改,但还没有大的改进。

以上是关于为 Keras ANN-线性回归选择层/函数的主要内容,如果未能解决你的问题,请参考以下文章

ANN:用神经网络逼近非线性函数

Keras 自定义损失(chi2)线性回归

kera 学习-线性回归

使用 Keras 的简单线性回归

Keras实践:实现非线性回归

在 tf.keras 中理解线性回归模型调优的问题