[英]Training pretrained model keras_vggface produces very high loss after adding batch normalization
[英]Very large loss values when training multiple regression model in Keras
我正在尝试使用以下功能构建多元回归模型来预测房价:
[bedrooms bathrooms sqft_living view grade]
= [0.09375 0.266667 0.149582 0.0 0.6]
我已经使用sklearn.preprocessing.MinMaxScaler
对功能进行了标准化和缩放。
我使用Keras构建模型:
def build_model(X_train):
model = Sequential()
model.add(Dense(5, activation = 'relu', input_shape = X_train.shape[1:]))
model.add(Dense(1))
optimizer = Adam(lr = 0.001)
model.compile(loss = 'mean_squared_error', optimizer = optimizer)
return model
当我去训练模型时,我的损失值异常高,大约是4或40万亿,每纪元只会损失大约一百万,这使得训练变得太慢了。 最初,我尝试提高学习率,但是并没有太大帮助。 然后,我进行了一些搜索,发现其他人使用了log-MSE损失函数,因此我尝试了一下,并且我的模型似乎运行良好。 (从140损失开始,经过400个时期下降到0.2)
我的问题是,当看到线性/多重回归问题的MSE值非常大时,我是否总是只使用log-MSE? 还是我可以做其他事情来尝试解决此问题?
关于这个问题为什么发生的猜测是我的预测变量和响应变量之间的比例差异很大。 X
在0-1之间,而最高的Y
达到800万。 (我是否想缩小我的Y
?然后再放大以进行预测?)
许多人相信扩展一切。 如果您的y
达到800万,我会按比例缩放它,是的,然后等到您得到预测后再逆向缩放。
不必太担心具体看到的loss
数。 当然,40万亿美元有点荒谬,表明可能需要对网络体系结构或参数进行更改。 主要关注的是验证损失是否实际上正在减少,以及网络是否正在实际学习中。 如您所说,如果“经过400个纪元后降为0.2”,那么听起来您就在正确的轨道上。
除了log-mse,mse和mae外,还有许多其他损失函数可用于回归问题。 看看这些 。 希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.