Как сделать объекты ввода переменного размера в кератах + как закодировать (x, y) координатные позиции? - PullRequest
0 голосов
/ 24 февраля 2020

Предыстория: Итак, у меня есть набор данных x, y позиций танцующих танцоров («делай их танг !!»). Некоторые последовательности танца с 8, некоторые с 5,4,8, до 16. Итак, я пытаюсь сделать что-то вроде захвата движений Человека, но это движение группы. Для этого я делаю стандартную вещь, которая делается для генерации текста: "генерируйте по одной выборке за раз, после просмотра последовательности 10 секунд" (что составляет 100 временных шагов с частотой дискретизации 0,1 л. мой входной размер = [batch_size, timesteps, features]. Моя модель выглядит следующим образом: -

steps = 100
features = 32 #because the maximum number of dancers=16 times x,y for each
model = Sequential()
model.add(LSTM(50, activation='tanh', input_shape=(steps, features),
           return_sequences=True))
model.add(LSTM(50, activation='tanh'))
model.add(Dense(features,activation='relu'))
model.compile(optimizer=adam(lr=0.001), loss='mse')

Итак, я обучил модель, используя функцию batch_generator, используя model.fit_generator для 100 эпох, и, скажем, входные точки данных >>>> чем число обучаемых параметров. * Модель создает последовательность движения в течение первых нескольких секунд (например, 4-5 секунд), учитывая начальное значение ввода в 10 секунд, но затем после этого он генерирует последовательность, в которой все останавливается, то есть он показывает, что точки всегда останавливаются. Таким образом, это в основном предсказывает предыдущее значение. Кстати: как я создаю вывод, это то, что я заполняю ввод из исходного набора данных --- > Выполнить вывод на модели ----> добавить вывод для ввода и снова выполнить вывод *

Мои вопросы:

1. Ввод данных Enco ding Как я должен кодировать входные данные тренировки, которые представляют собой (x, y) позиции в системе координат, где они не go в отрицательном значении. В настоящее время я делаю только нормализацию по максимальному значению входа (то есть == 50), поэтому все входные значения находятся в диапазоне от 0 до 1, и, конечно же, они меняются во время вывода?

2. Функция активации Является ли выбор функций активации причиной такого выхода - когда модель прогнозирует что-то для некоторых значений, но после этого она просто прогнозирует предыдущее значение, создавая эффект остановленного движения?

3 . Переоснащение Это просто вопрос переоснащения, когда я переоснащаюсь к входным последовательностям, а когда модель видит новую последовательность, это просто SUPER BAD ??

4. Заполнение входных последовательностей нулями Итак, в настоящее время я делаю эту вещь, где я дополняю входные последовательности нулями, если количество танцоров меньше максимального количества танцоров (что имеет место во многих танцевальных последовательностях). , Итак, я предполагаю, что это делает разреженный векторный ввод в LSTM, и это объясняет неправильный вывод?

5. ОСОБЕННОСТИ ПЕРЕМЕННОГО ВХОДА есть ли где-то я могу сделать модель так, чтобы она принимает переменные входные данные? иначе переменные особенности. Так что-то вроде model.add(LSTM(50,input_shape=(steps,None)). Если да, то я просто не могу сказать, что это керас? и если да, то как !?

6. Внимание У меня нет большого представления о внимании, но мне нужно что-то такое в такой проблеме?

7. Выбор Модель Итак, конечная цель - сделать танцевальные последовательности в стиле входных последовательностей. Я впервые начал с модели LSTM + MDN после прочтения о модели генератора захвата движения человека в хореографии, называемой chor-rnn. Но моя модель LSTM-MDN выводила нечто, похожее на случайный шум. Как мне смоделировать входные размеры и сами значения (x, y), чтобы тренироваться на модели LSTM-MDN?

8. как изменить модель, чтобы я мог "ОБРАЗЕЦ ИЗ ВЫХОД "на каждом шаге в выводе, чтобы получить различный вывод ??

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