Keras NN损失为1

Keras NN损失为1,keras,neural-network,Keras,Neural Network,开始使用简单的NN,但每次迭代我都会损失一个。有人能指出我做错了什么吗 这来自Kaggle入门课程,我修改的培训集包含店铺id、类别id、商品id、月份和收入。我基本上是在预测下个月每个类别的每家商店的收入 我已经扩展了收入,并在一个简单的NN上进行了培训,该NN具有2个隐藏层;然而,由于损失持续不断,训练似乎并不奏效。我还没有对标签(即店铺ID、类别ID)做任何处理,但我仍然认为每次迭代的损失都会发生变化 如果您对编码实践有一些意见,我也很感兴趣 谢谢 X_train = grouped_tr

开始使用简单的NN,但每次迭代我都会损失一个。有人能指出我做错了什么吗

这来自Kaggle入门课程,我修改的培训集包含店铺id、类别id、商品id、月份和收入。我基本上是在预测下个月每个类别的每家商店的收入

我已经扩展了收入,并在一个简单的NN上进行了培训,该NN具有2个隐藏层;然而,由于损失持续不断,训练似乎并不奏效。我还没有对标签(即店铺ID、类别ID)做任何处理,但我仍然认为每次迭代的损失都会发生变化

如果您对编码实践有一些意见,我也很感兴趣

谢谢

X_train = grouped_train.drop('revenue', axis=1)
y_train = grouped_train['revenue']

print('X & y trains')
print(X_train.head())
print(y_train.head())

scaler = StandardScaler()
y_train = pd.DataFrame(scaler.fit_transform(y_train.values.reshape(-1,1)))

print('Scaled y train')
print(y_train.head())

keras.backend.clear_session()

model = Sequential()
model.add(Dense(30, activation='relu', input_shape=(4,)))
model.add(Dense(30, activation='relu'))
model.add(Dense(1, activation='relu'))

model.summary()

print('Compile & fit')
model.compile(loss='mean_squared_error', optimizer='RMSprop')
model.fit(X_train, scaled_data, batch_size=128, epochs=13)

predictions = pd.DataFrame(model.predict(test))

print('Scaled predictions')
print(predictions.head())

print('Unscaled predictions')
print(pd.DataFrame(scaler.inverse_transform(predictions)).head())


看起来您对最后一层使用了错误的激活。您有一个回归问题,因此标准的最终激活层应该是activation='linear'

model.add(Dense(1, activation='relu'))

model.add(Dense(1, activation='linear'))
编辑:
此外,model.fit正在使用“缩放数据”不应将缩放数据替换为y\u train

请将代码作为文本而不是图像发布。@thushv89 ok将代码添加到文章正文中。是的,就是这样。如果我将dataframe vs numpy数组传递给Keras的fit函数,这也有关系吗?我相信Keras fit函数可以处理任何“类似于”的数组,但我还没有测试过是否存在性能差异,等等。