Я новичок в TensorFlow. Пока я читаю документы. Я нашел термин tensor
действительно запутанным. Какая связь между tensor
и Variable
, tensor
vs tf.constant
, 'tensor' vs tf.placeholder
? Являются ли они все типы тензоров?Как понять термин «тензор» в TensorFlow?
ответ
TensorFlow не имеет первоклассных объектов тензора, что означает отсутствие понятия Tensor
в базовом графе, который выполняется во время выполнения. Вместо этого граф состоит из узлов op, связанных друг с другом, представляющих операции. Операция выделяет память для своих выходов, которые доступны в конечных точках :0
, :1
и т. Д., И вы можете думать о каждой из этих конечных точек как Tensor
. Если у вас есть tensor
, соответствующий nodename:0
, вы можете получить его значение как sess.run(tensor)
или sess.run('nodename:0')
. Гранулярность выполнения происходит на уровне операции, поэтому метод run
будет выполнять op, который будет вычислять все конечные точки, а не только конечную точку :0
. Возможно иметь узел Op без выходов (например, tf.group
), и в этом случае нет связанных с ним тензоров. Невозможно иметь тензоры без базового узла Op.
Вы можете проверить, что происходит в основной графике, делая что-то вроде этого
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
, то :0
конечная точка является допустимым значением для выборки на обоих этих узлов. Однако Variable:0
имеет специальный тип ref
, означающий, что он может использоваться как вход для мутирующих операций. Результатом вызова Python tf.Variable
является объект Python Variable
, и есть какая-то магия Python для замены Variable/read:0
или Variable:0
в зависимости от того, нужна ли мутация. Поскольку большинство операционных систем имеют только 1 конечную точку, :0
отбрасывается. Другой пример: Queue
- close()
метод создаст новый узел Close
op, который подключится к Queue
op. Подводя итог - операции с объектами python, такие как Variable
и Queue
, отображают различные базовые узлы TensorFlow op в зависимости от использования.
Для опс как tf.split
или tf.nn.top_k
, которые создают узлы с несколькими конечными точками, session.run
вызов Python автоматически завершает выход в tuple
или collections.namedtuple
из Tensor
объектов, которые могут быть выбраны индивидуально.
Что вы подразумеваете под «первоклассными тензорными объектами»? Существует класс под названием «tf.Tensor». Мог бы объяснить пример, если это возможно. –
нет тензоров в базовом графике, просто операторы, связанные с другими операциями –
, как вы получаете доступ к операции? Вы можете напрямую обращаться к входам и выходам операции? –
От glossary:
Тензор типизированная многомерный массив. Например, 4-мерный массив чисел с плавающей запятой, представляющий мини-пакет изображений с размерами [партия, высота, ширина, канал].
В принципе, каждый данных является Tensor в TensorFlow (отсюда и название):
- заполнителей тензоры, к которому вы можете кормить значение (с
feed_dict
аргументом вsess.run()
) - Переменные - это тензоры, которые вы можете обновить (с
var.assign()
). Технически говоря,tf.Variable
не подклассtf.Tensor
хотя tf.constant
только самый основной Tensor, который содержит фиксированное значение, заданное при создании его
Однако, в графе, каждый узел операция, которая может иметь тензоры в качестве входов или выходов.
Я не согласен. Если вы посмотрите на раздел 2 белой бумаги tensorflow: «В графе TensorFlow каждый узел имеет ноль или более входов и ноль или более выходов и представляет собой экземпляр операции». Переменные, константы и заполнители - это узлы, ака, экземпляр ОПЕРАЦИЙ точно так же, как tf.mul или tf.add. Я думаю, что они производят тензоры в качестве выхода, но сами они не являются тензорами. – ZijunLost
Ну да, график состоит из операций, которые проходят Тензоры между собой.Я обновлю свой тензор, чтобы объяснить операции, связанные с 'tf.constant' и' tf.placeholder' –
, спасибо, но я по-прежнему считаю, что лучше назвать заполнители или константы «операциями», которые производят тензоры, вместо того, чтобы говорить «заполнители» тензоры». Если вы прочитали документ: «TensorFlow предоставляет операцию создания заполнителя, которая должна быть загружена с данными. Для получения дополнительной информации см. Раздел« Подача данных ». – ZijunLost
Как уже было сказано другими, да, они все являются тензорами.
Как я понял, это сначала визуализировать и понять тензоры 1D, 2D, 3D, 4D, 5D и 6D, как на рисунке ниже. (Источник: knoldus)
Теперь, в контексте TensorFlow, вы можете представить себе вычислительный график, как показано ниже.
Здесь, она принимает два тензора a
и b
как вход; умножает тензоры с самим собой, а затем добавляет результат этих умножений для получения тензора результатов t3
. И эти умножения и дополнениеOp
s происходит в узлах графа вычислений.
И эти тензоры a
и b
могут быть постоянными тензорами, переменными тензорами или заполнителями. Это не имеет значения, если они имеют один и тот же тип данных и совместимые формы (или broadcast
, способные к нему) для достижения операций.
- 1. TensorFlow: Как оценивать тензор?
- 2. Увеличить тензор в tensorflow
- 3. Tensorflow: Как правильно восстановить тензор
- 4. Tensorflow тензор Reshape
- 5. TensorFlow - Тензор Reshape
- 6. тензор Своп осей в tensorflow
- 7. Как разыменовать тензор типа _ref в TensorFlow?
- 8. tensorflow - добавить тензор по имени
- 9. TensorFlow: Оценка функции через тензор
- 10. TensorFlow - NumPy подобный тензор индексации
- 11. Batched 4D Тензор Tensorflow индексирование
- 12. TensorFlow: тензор Dst не инициализирован
- 13. Добавление информации в тензор в TensorFlow
- 14. Как передать тензор TensorFlow модели TFLearn
- 15. TensorFlow присваивает тензор concat-result тензор разной формы
- 16. нарезка тензор с использованием индексов в Tensorflow
- 17. Все ли тензор в TensorFlow, включая операции?
- 18. Tensorflow преобразовать массив тензоров в один тензор
- 19. Что означает тензор 4d в Tensorflow?
- 20. Невозможно преобразовать частично преобразованный тензор в TensorFlow
- 21. получить ошибку, когда тензор ломтика в TensorFlow
- 22. TensorFlow: используя тензор для индексации другого тензора
- 23. Как заполнить тензор в C++
- 24. Tensorflow - применить функцию над 1D Тензор
- 25. Как читать ваши собственные данные изображения как тензор в Tensorflow?
- 26. Tensorflow Inception RESNET v2 Тензор вход
- 27. Как преобразовать CVPixelBufferRef в тензор
- 28. Как сохранить тензор в контрольной точке в Tensorflow?
- 29. Как преобразовать тензор в массив numpy в TensorFlow?
- 30. Tensorflow: Как преобразовать скалярный тензор в скалярную переменную в python?
Да, тензор подобен объекту, он может быть строкой переменной и т. Д. –
Я думаю, что понимание того, что ** данные ** и ** операции ** находятся в TensorFlow, было бы полезно для этого вопроса , – zhy