Как получить размеры тензора (в TensorFlow) на время построения графика?

Я пытаюсь сделать Op, который не ведет себя так, как ожидалось.

graph = tf.Graph() with graph.as_default(): train_dataset = tf.placeholder(tf.int32, shape=[128, 2]) embeddings = tf.Variable( tf.random_uniform([50000, 64], -1.0, 1.0)) embed = tf.nn.embedding_lookup(embeddings, train_dataset) embed = tf.reduce_sum(embed, reduction_indices=0) 

Поэтому мне нужно знать размеры embed Tensor. Я знаю, что это можно сделать во время работы, но для такой простой операции слишком много работы. Какой самый простой способ сделать это?

5 Solutions collect form web for “Как получить размеры тензора (в TensorFlow) на время построения графика?”

Tensor.get_shape() из этой записи .

Из документации :

 c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) print(c.get_shape()) ==> TensorShape([Dimension(2), Dimension(3)]) 

Я вижу, что большинство людей путаются в tf.shape(tensor) и tensor.get_shape() Давайте tensor.get_shape() :

  1. tf.shape

tf.shape используется для динамической формы. Если ваша тензорная форма изменчива , используйте ее. Пример: вход представляет собой изображение с изменяемой шириной и высотой, мы хотим изменить его размер до половины его размера, тогда мы можем написать что-то вроде:
new_height = tf.shape(image)[0] / 2

  1. tensor.get_shape

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

Вывод: tf.shape можно использовать практически в любом месте, но t.get_shape только для фигур можно выводить из графика.

Функция для доступа к значениям:

 def shape(tensor): s = tensor.get_shape() return tuple([s[i].value for i in range(0, len(s))]) 

Пример:

 batch_size, num_feats = shape(logits) 

Просто распечатайте встроенный график построения (ops) без запуска:

 import tensorflow as tf ... train_dataset = tf.placeholder(tf.int32, shape=[128, 2]) embeddings = tf.Variable( tf.random_uniform([50000, 64], -1.0, 1.0)) embed = tf.nn.embedding_lookup(embeddings, train_dataset) print (embed) 

Это покажет форму тензора вложения:

 Tensor("embedding_lookup:0", shape=(128, 2, 64), dtype=float32) 

Как правило, хорошо проверять формы всех тензоров перед обучением ваших моделей.

Давайте сделаем это простым, черт возьми. Если вы хотите использовать один номер для количества измерений, например 2, 3, 4, etc., Просто используйте tf.rank() . Но, если вы хотите точную форму тензора, используйте tensor.get_shape()

 with tf.Session() as sess: arr = tf.random_normal(shape=(10, 32, 32, 128)) a = tf.random_gamma(shape=(3, 3, 1), alpha=0.1) print(sess.run([tf.rank(arr), tf.rank(a)])) print(arr.get_shape(), ", ", a.get_shape()) # for tf.rank() [4, 3] # for tf.get_shape() Output: (10, 32, 32, 128) , (3, 3, 1) 
  • Tensorflow ImportError: нет модуля с именем '_pywrap_tensorflow_internal' в Windows 10
  • Тесты Python от TensorFlow не работают
  • Tensorflow VarLenFeature vs FixedLenFeature
  • Что делает `tf.strided_slice ()` do?
  • Как получить стабильные результаты с помощью TensorFlow, установив случайное семя
  • В TensorFlow, в чем смысл «: 0» в имени переменной?
  • Запуск Tensorflow - количество классов
  • Операции над тензорными сегментами во втором измерении
  •  
    Interesting Posts for Van-Lav

    Facebook События и часовые пояса, как конвертировать UTC datetime в то, что ожидает facebook?

    В Cython возможны внутренние типизации C ++?

    Pretty Printing a pandas dataframe

    Как создать ссылку view / python на scipy разреженной матрице?

    BeautifulSoup не извлекает все html (автоматически удаляя большую часть html-страницы)

    Самый эффективный способ удаления лишних строк в Python

    Не удалось запустить процесс uwsgi

    Добавление в 2D-списки в Python

    как вернуть все memcached значения в Google App Engine?

    Приложение Heroku потерпело крах после нажатия небольших изменений. Очень смущенный

    TensorFlow Изменение размера тензора изображения до динамической формы

    Firebase DB HTTP API Auth: когда и как обновить токен JWT?

    «easy_install» не распознается как внутренняя или внешняя команда, оперативная программа или командный файл

    Как отключить INFO из журналов в PySpark без изменений в log4j.properties?

    celerybeat – несколько экземпляров и мониторинг

    Python - лучший язык программирования в мире.