Как понять тензор в TensorFlow?
Я новичок в TensorFlow. Пока я читаю существующую документацию, я нашел термин tensor
очень запутанно. Из-за этого мне нужно уточнить следующие вопросы:
- Каковы отношения между
tensor
иVariable
,tensor
противtf.constant
, 'Тензор' иtf.placeholder
? - они все типы тензоров?
4 ответов
TensorFlow не имеет первоклассных тензорных объектов, что означает, что нет понятия Tensor
в базовом графике, который выполняется средой выполнения. Вместо этого граф состоит из узлов op, соединенных друг с другом, представляющих операции. Операция выделяет память для своих выходов, которые доступны на конечных точках :0
, :1
и т. д., И вы можете думать о каждой из этих конечных точек как Tensor
. Если у вас есть tensor
соответствующую nodename:0
вы можете получить его значение как sess.run(tensor)
или sess.run('nodename:0')
. Гранулярность выполнения происходит на уровне операции, поэтому run
метод выполнит op, который вычислит все конечные точки, а не только :0
конечной точки. Возможно иметь узел Op без выходных данных (например,tf.group
), в этом случае с ним не связаны тензоры. Это не возможно, чтобы иметь тензоров без базового узла ОП.
вы можете изучить, что происходит в базовом графике, сделав что-то вроде это
tf.reset_default_graph()
value = tf.constant(1)
print(tf.get_default_graph().as_graph_def())
поэтому с tf.constant
вы получаете один узел операции, и вы можете получить его с помощью sess.run("Const:0")
или sess.run(value)
аналогично, value=tf.placeholder(tf.int32)
создает обычный узел с именем Placeholder
, а вы могли бы кормить его как feed_dict={"Placeholder:0":2}
или feed_dict={value:2}
. Вы не можете кормить и получать заполнитель в том же session.run
вызов, но вы можете увидеть результат, прикрепив tf.identity
узел сверху и принести.
для переменной
tf.reset_default_graph()
value = tf.Variable(tf.ones_initializer()(()))
value2 = value+3
print(tf.get_default_graph().as_graph_def())
вы увидите, что он создает два узла Variable
и Variable/read
, the :0
endpoint является допустимым значением для выборки на обоих этих узлах. Однако Variable:0
особое ref
тип означает, что его можно использовать в качестве входных данных для мутирующих операций. Результат вызова Python tf.Variable
- питон Variable
объект и есть некоторая магия Python для замены Variable/read:0
или Variable:0
в зависимости от того, необходима ли мутация. Поскольку большинство ops имеют только 1 конечную точку,:0
упал. Другой пример:Queue
-- close()
метод создаст новый Close
op узел, который подключается к Queue
op. Подводя итог -- операции над объектами python, такими как Variable
и Queue
сопоставление с различными базовыми узлами TensorFlow op в зависимости от использования.
для таких операций, как tf.split
или tf.nn.top_k
, которые создают узлы с несколькими конечными точками, в Python session.run
вызов автоматически переносит вывод в tuple
или collections.namedtuple
of Tensor
объекты, которые могут быть выбраны индивидуально.
С глоссарий:
Тензор-это типизированный многомерный массив. Например, 4-D массив чисел с плавающей запятой, представляющий мини-пакет изображений с размерами [пакет, высота, ширина, канал].
в принципе, каждый данные является тензором в TensorFlow (отсюда и название):
- заполнители-это тензоры, в которые вы можете ввести значение (с помощью
как уже упоминалось другими, да, все они тензоры.
как я понял, это сначала визуализировать и понимать 1D, 2D, 3D, 4D, 5D и 6D тензоры, как на рисунке ниже. (источник: knoldus)
теперь, в контексте TensorFlow, вы можете представить себе вычислительный график, подобный приведенному ниже,
здесь Op
s возьмите два тензора a
и b
as вход; умножение тензоры с собой и потом добавляет результат этих умножений для получения результата тензора t3
. А эти!--11-->умножение и дополнение Op
s происходит на узлах в графе вычислений.
а эти тензоры a
и b
могут быть постоянными тензорами, переменными тензорами или заполнителями. Неважно, как долго, как они того же самого тип данных и совместимые формы(или broadcast
способный к нему) для достижения операций.
центральным типом данных TensorFlow является тензор. Тензоры являются базовыми компонентами вычисления и фундаментальной структурой данных в TensorFlow. Без использования сложных математических интерпретаций можно сказать, что тензор (в TensorFlow) описывает многомерный числовой массив с нулевым или n-мерным набором данных, определяемым рангом, формой и типом.Подробнее:что такое тензоры в TensorFlow?