Я обучаю RNN классифицировать последовательность ввода (13 значений на каждом временном шаге) как определенный класс.
Вот соответствующая часть моего кода (номера строк с префиксом)
50 data = tf.placeholder(tf.float32, [None, 40,13]) #Number of examples, number of input, dimension of each input
51 target = tf.placeholder(tf.float32, [None, 3])
52 num_hidden = 24
53 cell = tf.nn.rnn_cell.LSTMCell(num_hidden,state_is_tuple=True)
54 val, _ = tf.nn.dynamic_rnn(cell, data, dtype=tf.float32)
Здесь мой I дополняется (с префиксом и нулевым значением) для каждой входной последовательности пакета, чтобы сделать его 40x13. (Операция заполнения не показана в вышеприведенном коде)
Таким образом, RNN рассмотрит последние 40 шагов для каждого примера, а затем один горячий вектор цели сообщит ему, к какому классу относится этот пример.
Кроме того, я убедился, что выходной класс каждого примера равен 1 или 2 (никогда не равен нулю).
Я видел https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn, в котором упоминается параметр sequence_length.
Que 1) Можно ли использовать его для каждого примера в пакете или в пакете?
Que 2) Кроме того, можете ли вы предложить мне изменить это значение для каждого пакета или для каждого пакета (в зависимости от того, что уместно), предполагая, что у меня есть целочисленный массив seq_len, в котором хранится требуемое значение для каждого пакета или каждого примера (в зависимости от того, что релевантно)?
[quote] sequence_length: (необязательно) размер вектора int32 / int64 [batch_size]. Используется для копирования состояния и выходов обнуления при превышении длины последовательности элемента пакета. Так что это скорее для правильности, чем для производительности. [/ Quote]
Que 3) Предположим, что я установил его на 14 - означает ли это, что RNN будет учитывать первый 14-кратный шаг и переносить состояние вывода (назовем его O 14 ) после 14-го шага и игнорировать входные данные с 15-го по 40-й шаг (считайте все нули), а затем свяжите O 14 с целевым вектором. Так тогда мне не нужно будет добавлять префикс с нулем?
Спасибо.
Вам нужно больше кода, чтобы понять эту ситуацию?
PS: Моя настройка
$ python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.8.0'