Как получить тензор потока для оценки формы во время выполнения?

Я хотел бы оценить форму тензора во время выполнения. Я рассчитываю пересечение между двумя наборами. Количество пересечений есть размерность тензора x, При определении графика форма тензора устанавливается на [Dimension(None)], Таким образом, обычный x.get_shape() метод просто вернет None, Есть ли способ оценить форму None во время выполнения? я мог бы сделать sess.run(x) и получить форму массива numpy, но я бы хотел, чтобы это был скомпилированный оператор, чтобы возвращалась только форма. Спасибо!

0 ответов

Этому вопросу уже год, поэтому я считаю, что вы, возможно, уже нашли ответ, который искали. Но на случай, если его будут искать, я выложу здесь.

Ответ довольно прост - используйте tf.shape( см. документацию) для оценки формы входного тензора во время выполнения сеанса.

Пример:

import numpy as np
import tensorflow as tf


input_data = np.zeros((4, 1, 2, 3), np.float32)

with tf.Graph().as_default():
    input_tensor = tf.placeholder(tf.float32, (None, None, None, 3))
    input_tensor_shape = tf.shape(input_tensor)

    with tf.Session() as session:
        shape = input_tensor_shape.eval({input_tensor: input_data}, session)
        print(shape)

Вывод:
[4 1 2 3]

Другие вопросы по тегам