Я пытаюсь классифицировать новостные статьи с помощью RNN. Поскольку длина новостных статей не фиксирована, я использую tf.nn.dynamic_rnn().Tensorflow: tf.nn.dynamic_rnn(): Невозможно собрать выходные значения из последнего измерения динамического времени-майка
# ....{Some Code Above}.....
with graph.as_default():
sentences = tf.placeholder(tf.float32, shape=(batch_size, None, emmbedding_dimension))
sequence_length = tf.placeholder(tf.float32, shape=batch_size)
labels = tf.placeholder(tf.float32, shape=(batch_size, 2))
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(num_units=lstm_size)
stacked_lstm = tf.nn.rnn_cell.DropoutWrapper(lstm_cell, output_keep_prob=1)
stacked_lstm = tf.nn.rnn_cell.MultiRNNCell([stacked_lstm] * no_of_lstm_layers)
outputs, states = tf.nn.dynamic_rnn(cell=stacked_lstm,
inputs=sentences,
sequence_length=sequence_length,
initial_state=stacked_lstm.zero_state(batch_size, tf.float32))
# ....{Some Code Below}.....
Тензора форма 'выходы' из приведенного выше кода (batch_size,?, Lstm_size).
Я хочу собрать результат в конце предложений, который является динамическим. Я использую следующую команду для этого
outputs = tf.transpose(outputs, [1, 0, 2])
last = tf.gather(outputs, int(outputs.get_shape()[0]) - 1)
я получаю следующее сообщение об ошибке,
Traceback (most recent call last):
File "./rnn_fitness_level1_0.py", line 127, in <module>
last = tf.gather(outputs, int(outputs.get_shape()[0]) - 1)
TypeError: __int__ returned non-int (type NoneType)
Я считаю, что эта ошибка из-за динамической формы выходов через time_major (sentence_major).
Другими словами, результат "outputs.get_shape() [0]" есть "?" (None)
Над техникой для получения последней работы выходных, когда мы используем фиксированный time_major (длина предложения).
Есть ли способ достичь этого для динамического time_major (длина предложения)?
В настоящее время, я делаю следующее
last = tf.reduce_mean(outputs, [0])
Но мое понимание, делая среднее значение по time_major (длина предложения), я не использую потенциал RNN нахождения последовательного шаблон. Пожалуйста, дайте мне знать ваш взгляд на то же самое.