Keras NN потеря 1 - PullRequest
       0

Keras NN потеря 1

0 голосов
/ 15 января 2020

Начало работы с простым NN, но моя потеря остается одной на каждой итерации. Может кто-нибудь указать на то, что я делаю здесь не так.

Это из вводного курса Kaggle, и мой модифицированный учебный набор содержит идентификатор магазина, идентификатор категории, идентификатор товара, месяц и доход. Я в основном пытаюсь предсказать доход по магазинам в каждой категории в следующем месяце.

Я увеличил доход и обучился на простом NN с 2 скрытыми слоями; однако, похоже, что тренировка не работает, так как потери остаются постоянными. Я ничего не сделал с ярлыками (ie идентификаторы магазинов, идентификаторы категорий), но я все равно думал бы, что потери будут меняться на каждой итерации.

Если у вас есть какие-то комментарии по практике кодирования, я бы также интересно.

Спасибо.

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())

IN

OUT

1 Ответ

0 голосов
/ 16 января 2020

Похоже, вы используете неправильную активацию для последнего слоя. У вас есть проблема регрессии, поэтому стандартный финальный уровень активации должен быть активацией = 'linear'

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

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

Редактировать: Кроме того, model.fit использует 'scaled_data', не следует заменять scaled_data на y_train

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...