2015-12-04 1 views
4

Я перехожу к учебнику beginner MNIST (http://www.tensorflow.org/tutorials/mnist/beginners/index.html) и пытается получить логический список точно предсказанных значений из объекта тензора correct_prediction. Я нахожу это запутанным.Извлечение данных из объекта TensorFlow - список логических значений from correct_prediction

Согласно учебнику correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) suppost, чтобы дать нам список булевы:

Это дает нам список булевым. Чтобы определить, какая доля равна , мы отбрасываем числа с плавающей запятой, а затем берем среднее значение. Для примера [True, False, True, True] станет [1,0,1,1], который будет стать 0.75.

Однако, Попытка correct_prediction[0] дает нам <tensorflow.python.framework.ops.Tensor at 0x111a404d0>. type(correct_prediction) дает нам tensorflow.python.framework.ops.Tensor, который не является списком. Вызвав dir(), чтобы увидеть методы, а затем correct_prediction.__getitem__(0) дает нам <tensorflow.python.framework.ops.Tensor at 0x111386f50>.

Как мне получить доступ к списку предсказанных логических значений и для этих значений значений y, W и b? Должны ли они каким-то образом получить доступ от tf.Session?

Большое спасибо!

ответ

2

Тензорных переменными фактически описывают вычисления, которые должны быть выполнены для того, чтобы получить значение интересующие вас.

Других слов, тензор, определенный с correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) не содержит список булевых, она содержит инструкции для вычисления его в графе тензорного потока. Чтобы получить фактические значения, вам нужно сказать, что tensorflow вычисляет его на графике.

Во-первых, вам нужна переменная tf.Session. Простым способом получить его для тестирования в интерактивной оболочке является sess = tf.InteractiveSession(), за которым следует инициализация переменной: sess.run(tf.initialize_all_variables()).

Затем вы можете позвонить sess.run(tensor_variable), чтобы вычислить значение данного тензора (или их список). Если ваши тензоры включают заполнители в их вычислениях (что они обычно делают), вам также необходимо предоставить словарь фида. Это иллюстрируется в учебнике.

Вместо session.run() вы также можете вызвать метод .eval() из тензоров. Для этого также требуется сеанс по умолчанию.