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

Я могу получить размеры тензоров во время построения графика, вручную распечатав формы тензоров (tf.shape ()), но как получить форму этих тензоров во время выполнения сеанса?
Причина, по которой мне нужна форма тензоров во время выполнения, заключается в том, что во время построения графика форма некоторых тензоров выглядит как (?, 8), и тогда я не могу вывести первое измерение.

0
0
758
2

Ответы 2

Вы должны сделать тензоры выходными данными графика. Например, если showme_tensor - это тензор, который вы хотите распечатать, просто запустите график следующим образом:

_showme_tensor = sess.run(showme_tensor)

а затем вы можете просто распечатать результат при печати списка. Если у вас есть разные тензоры для печати, вы можете просто добавить их вот так:

_showme_tensor_1, _showme_tensor_2 = sess.run([showme_tensor_1, showme_tensor_2])

Причина, по которой некоторые тензоры имеют форму (?,?) В тензорном потоке, заключается в том, что они являются заполнителями. Он может меняться во время работы в зависимости от ваших входных данных.

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

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(None, None))
print(x.shape)  # ( ?,?)
with tf.Session() as sess:

  rand_array = np.random.rand(3, 3)
  after_sess_x = sess.run(x,feed_dict={x: rand_array})
  print(after_sess_x.shape) # ( 3,3)

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