Так что в настоящее время я сижу на проблеме классификации текста, но я даже не могу настроить свою модель в Tensorflow. У меня есть пакет предложений длиной 70 (с использованием заполнения), и я использую embedding_lookup с размером вложения 300. Вот код для встраивания:
embedding = tf.constant(embedding_matrix, name="embedding")
inputs = tf.nn.embedding_lookup(embedding, input_.input_data)
Так что теперь входные данные должны иметь форму [batch_size, предложение_длина, встраивание_размер] , что неудивительно. Теперь, к сожалению, я получаю ValueError для моего LSTMCell, так как он ожидает ndim = 2 и, очевидно, входные данные имеют ndim = 3. Я не нашел способ изменить ожидаемую форму ввода слоя LSTM. Вот код для моей инициализации LSTMCell:
for i in range(num_layers):
cells.append(LSTMCell(num_units, forget_bias, state_is_tuple, reuse=reuse, name='lstm_{}'.format(i))
cell = tf.contrib.rnn.MultiRNNCell(cells, state_is_tuple=True)
Ошибка вызывается в функции вызова ячейки, которая выглядит следующим образом:
for step in range(self.num_steps):
if step > 0: tf.get_variable_scope().reuse_variables()
(cell_output, state) = cell(inputs[:, step, :], state)
Аналогичный вопрос, но не помогает: Понимание формы ввода LSTM Tensorflow