Какую функцию активации использовать в задаче регрессии, когда у вашей цели есть верхний и нижний предел

Я пытаюсь выполнить задачу регрессии с использованием keras, и моя цель - количество дней от 0 до 15.

def rmse(y_true, y_pred):
    return backend.sqrt(backend.mean(backend.square(y_pred - y_true), axis=-1))


model = Sequential()
model.add(Dense(1276, input_dim=1276, kernel_initializer='normal', activation='relu'))
model.add(Dense(200, kernel_initializer='normal', activation='relu'))
model.add(Dense(100,kernel_initializer='normal' ,  activation='relu'))
model.add(Dense(1, activation="linear"))
# Compile model
optimizer = optimizers.Adam(lr=1e-4)
model.compile(loss=rmse, optimizer=optimizer)
# Fit the model
model.fit(X,y , validation_split=0.33, epochs=100, batch_size=512)

Когда я тренирую эту модель, я получаю очень большие значения. Мне интересно, не упустил ли я что-то в своей реализации. Должен ли я использовать специальную функцию активации для такого рода проблем?

Я бы масштабировал выходные данные на 1/15, поэтому он принимает значения от 0 до 1 и использовал "сигмовидную" активацию.

Kota Mori 13.09.2018 21:58

Я также думаю о сигмовидной кишке. Или, может быть, рассматривать это как задачу классификации с 15 вариантами? в этом случае вы можете использовать 15 единиц вывода и выбрать вариант с максимальной активацией (например, используя функцию 'argmax')

A cup of tea 13.09.2018 22:11

Вы также можете попробовать запустить его с разными размерами пакетов и попробовать другую функцию потерь. Проведите несколько экспериментов, чтобы увидеть, какие параметры ведут вас к правильному пути.

Milton Arango G 13.09.2018 22:18
0
3
49
0

Другие вопросы по теме