繁体   English   中英

Keras 极高的损失

[英]Keras Extremely High Loss

我试图通过特征来预测价格。 我选择了一个非常简单的模型,但它的工作原理很奇怪。 损失函数极高,看不出问题出在哪里。

这是我的模型:

# define base model
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(62, input_dim = 62, kernel_initializer='normal', activation='relu'))
    model.add(Dense(31, kernel_initializer='normal', activation='relu'))
    model.add(Dense(15, kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, kernel_initializer='normal'))
    # Compile model
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model

这就是我准备数据的方式:(One-Hot,我将所有数据拆分以进行训练和测试)

df = encode_onehot(dataframe, cols=['Shape', 'Cut', 'Color', 'Clarity', 'Polish', 'Symmetry', 'Culet', '\tFluorescence'])

dataset = df.values
X = dataset[1:,4:66]
Y = dataset[1:,2]

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=42)

最后,训练:

baseline_model().fit(X_train, y_train, epochs=10, batch_size=64)
scores = baseline_model().evaluate(X_test, y_test, verbose=0)
print(baseline_model().summary())

结果很伤心:

Epoch 1/10
149767/149767 [==============================] - 4s - loss: 104759338.0333     
Epoch 2/10
149767/149767 [==============================] - 4s - loss: 104594236.9627     
Epoch 3/10
149767/149767 [==============================] - 4s - loss: 104556662.2948     

它不会变得更好。

我做错了什么?

正如@Yu-Yang 所说,您使用均方误差作为损失函数。 在损失值非常大之前,我遇到了同样的问题,在将损失函数更改为mean_squared_logarithmic_error 时,我得到了想要的结果。

model %>% compile(
optimizer = optimizer_rmsprop(lr=0.0001),
loss = loss_mean_squared_logarithmic_error,
metrics = c("accuracy")
)

损失值变为

时代 1/10
326981/326981 [==============================] - 17s - 损失:0.0048 - acc:0.9896

希望这有用!

  1. 像预处理步骤一样标准化你的数据集
  2. 正如我所看到的,您使用的是回归模型,因此使用回归模型,您的损失将与使用该模型进行分类时的损失完全不同
  3. 如果需要分类。 categorical_crossentropy或其他类似的方式设置损失函数。 并为您的 ml 中的最后一层设置激活函数。

最好的问候!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM