Неудобное использование RNN / LSTM - PullRequest
0 голосов
/ 04 июля 2018

Если я хорошо понял, RNN позволяет прогнозировать следующее значение с учетом последних значений в последовательности. Допустим, я хочу предсказать следующее значение функции cos (x), и у меня есть набор данных с результатами для x в диапазоне (0, 1000). Сначала я добавляю в модель cos (0) для прогнозирования cos (1), затем cos (1) для прогнозирования cos (2) и т. Д., И на каждом шаге настраиваются веса, и модель сохраняет в памяти последние значения для сделать следующий прогноз.

В моем случае Я хочу обучить модель прогнозировать качество видео. Для этого у меня есть набор данных с аннотированными видео. Для каждого видео, для каждого кадра я вычисляю набор из 36 функций, которые пространственно не связаны. Таким образом, форма входных данных (nb_videos, nb_frames, 36). Для каждого видео у меня есть оценка, представляющая глобальное качество видео, и форма ярлыков (nb_videos, 1).

Я не знаю, какой NN я могу использовать . n_frames x 36 слишком большой, я думаю, для простого многослойного персептрона Объекты могут иметь смысл вдоль оси времени, но не вдоль оси элементов, поэтому, если я не обучу 36 моделей с 1D сверточными линиями, CNN бесполезен. Наконец, функции входят в последовательность, но проблема с RNN состоит в том, что ему требуется оценка для каждого элемента последовательности, и модель работает только для прогнозирования следующих значений в этой последовательности, в частности.

Моя идея - иметь 1 модель RNN, которая обучается для любого видео. Я передаю RNN n_frames раз с 36 функциями в хорошем порядке, и только после этих итераций n_frames модель дает прогноз. Затем этот прогноз используется для настройки весов. Затем мы делаем это количество эпох с видео, случайно выбранным в наборе данных.

Имеет ли это смысл?

Существует ли нечто подобное?

1 Ответ

0 голосов
/ 04 июля 2018

Я не думаю, что вы делаете нетрадиционное использование RNN / LSTM, и ваша идея имеет смысл. Если я правильно понял, ваша идея заключается в использовании многозначного RNN:

Many to one RNN Источник: http://karpathy.github.io/2015/05/21/rnn-effectiveness/

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

from keras.models import Sequential
from keras.layers import LSTM, Dense

nb_frames = 10

model = Sequential()
model.add(LSTM(20, input_shape=(nb_frames, 36)))
model.add(Dense(1, activation='relu'))
model.compile('rmsprop', 'mse')
model.summary()

Очень часто встречаются RNN, и вы не будете использовать их нетрадиционно.

...