Ответ 1
Вы должны использовать операцию Graph:
a = tf.placeholder(tf.float32, shape=(None, 3072))
b = tf.shape(a)[0]
возвращается
<tf.Tensor 'strided_slice:0' shape=() dtype=int32>
а b = a.get_shape()[0]
возвращает
Dimension(None)
Предположим, что мы имеем
a = tf.placeholder(tf.float32, shape=(None, 3072))
b = a.get_shape()[0]
Как я могу преобразовать b, чтобы я мог использовать его в дальнейших вычислениях, например, для заданного тензора T я смогу создать новый, например
newT = T / b
Вы должны использовать операцию Graph:
a = tf.placeholder(tf.float32, shape=(None, 3072))
b = tf.shape(a)[0]
возвращается
<tf.Tensor 'strided_slice:0' shape=() dtype=int32>
а b = a.get_shape()[0]
возвращает
Dimension(None)
Ваш текущий путь уже работает. Я попробовал его со следующим кодом, и он отлично работает:
x = [[1,2,3],[4,5,6], [7,8,9]]
x = tf.constant(x)
size = x.get_shape()[0]
x /= size
with googlelog.Capture():
p_op = tf.Print(x, [x], "output: ", summarize=10)
sess.run(p_op)
С выходом:
output: [0 0 1 1 1 2 2 2 3]