Тензор потока in_top_kv - PullRequest
       14

Тензор потока in_top_kv

0 голосов
/ 18 ноября 2018

Привет, я пытаюсь построить простой RSN с 11 входами и 2 выходами X=tf.placeholder(tf.float32,[None,n_steps,n_inputs]) y=tf.placeholder(tf.int32,[None,n_steps,n_outputs])

Я знаю, что rnn исключает входные данные в форме [batch_size, n_steps, n_inputs], поэтому я так сформировал свои заполнители

Однако, когда я запускаю код, я получаю сообщение об ошибке

ValueError: Shape должен иметь ранг 2, но это ранг 3 для 'in_top_k / InTopKV2' (op: 'InTopKV2') с входными формами: [1,270,2], [1,270,2], [].

Ошибка, кажется, происходит здесь: correct = tf.nn.in_top_k(logits,tf.reshape(y,[1,n_steps,n_outputs]),1)

Я пытался изменить форму логитов, сжать логиты, расширить размеры y, но, похоже, ничего не работает.

Одно отличие, которое я заметил, заключается в том, что когда я сжимаю логиты с помощью

tf.squeeze(logits)

Ошибка теперь говорит

ValueError: Shape должен иметь ранг 1, но ранг 3

Это единственный «прогресс», который мне удалось сделать, любая помощь будет оценена.

ps, будь осторожен со мной, это мой первый вопрос

1 Ответ

0 голосов
/ 18 ноября 2018

Вы должны изменить входные данные как двумерные тензоры, затем вы можете изменить результат до желаемой формы:

logits_res = tf.reshape(logits, (-1, n_outputs))
y_res = tf.reshape(y, (-1, n_outputs))
correct_res = tf.nn.in_top_k(logits_res, y_res, 1)
correct = tf.reshape(correct_res, (-1, n_steps))
...