0

Я ищу код для языковой модели RNN. Я смущен в отношении 1) как создаются пары обучения (x, y), а затем 2) как вычисляется потеря. Код заимствован из учебника RNN Tensorflow (читатель модуль).Тензорный поток: повторяющиеся пары нейронных сетей и влияние на функцию потерь

Внутри модуля считывателя определен генератор ptb_iterator. Он принимает данные как одну последовательность, а дает x, y пар в соответствии с размером партии и количеством шагов, которые вы хотите «развернуть» RNN. Лучше всего смотреть на все определении первого, но та часть, которая спутать меня это:

for i in range(epoch_size): 
    x = data[:, i*num_steps:(i+1)*num_steps] 
    y = data[:, i*num_steps+1:(i+1)*num_steps+1] 
    yield (x, y) 

, которая описана как:

*Yields: 
Pairs of the batched data, each a matrix of shape [batch_size, num_steps]. 
The second element of the tuple is the same data time-shifted to the 
right by one.* 

Итак, если правильно понял, для последовательности данных [1 2 3 4 5 6] и num_steps = 2 то для стохастического градиентного спуска (т.е. batch_size = 1) будет генерироваться следующие пары:

  1. х = [1,2], у = [2,3]
  2. х = [3,4], у = [5,6]

1) Это правильный способ сделать это? Если это не может быть сделано таким образом, чтобы пары:

  1. х = [1,2], у = [2,3]
  2. х = [2,3], у = [3,4] ... # позволяет более точек данных

ИЛИ

  1. х = [1,2], у = [3]
  2. х = [2,3], у = [4 ] ... # гарантирует, что все прогнозы сделаны с длиной контекста = num_step s

2) Наконец, учитывая, что пары формируются, как они находятся в reader модуле, когда дело доходит до обучения, будет потеря вычисляться не отражают производительность РНН в течение целого ряда развернутых шагов вместо num_steps указано?

Например, модель будет делать прогноз для x = 3 (от x = [3,4]), не считая того, что перед ним 2 (т. Е. Разворачивание RNN на один шаг вместо двух).

ответ

0

Re (1), цель состоит в том, чтобы размер последовательности был намного больше, чем 2, и тогда вы не хотите копировать весь набор данных N раз, так как вы не получаете значительной статистической мощности. Re (2) это приближение для использования во время обучения; во время прогнозирования вы должны прогнозировать со всей последовательностью.