假设我有一个Tensorflow张量。如何将张量的尺寸(形状)作为整数值?我知道有两种方法SELECT rdd1.key,rdd1.value
FROM rdd1
INNER JOIN rdd2
WHERE rdd1.key = rdd2.key
和tensor.get_shape()
,但我无法将形状值作为整数tf.shape(tensor)
值。
例如,下面我创建了一个2-D张量,我需要将行数和列数作为int32
,以便我可以调用int32
来创建张量形状reshape()
。但是,方法(num_rows * num_cols, 1)
会将值返回为tensor.get_shape()
类型,而非Dimension
。
int32
答案 0 :(得分:96)
要将形状作为整数列表,请执行tensor.get_shape().as_list()
。
要完成tf.shape()
来电,请尝试tensor2 = tf.reshape(tensor, tf.TensorShape([num_rows*num_cols, 1]))
。或者,您可以直接执行tensor2 = tf.reshape(tensor, tf.TensorShape([-1, 1]))
,其中可以推断出其第一个维度。
答案 1 :(得分:25)
解决此问题的另一种方法是:
tensor_shape[0].value
这将返回Dimension对象的int值。
答案 2 :(得分:5)
对于2-D张量,您可以使用以下代码将行数和列数作为int32:
rows, columns = map(lambda i: i.value, tensor.get_shape())
答案 3 :(得分:4)
2.0兼容答案:在 Tensorflow 2.x (2.1)
中,您可以获取张量的尺寸(形状)为整数值,如以下代码所示:
方法1(使用tf.shape
):
import tensorflow as tf
c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
Shape = c.shape.as_list()
print(Shape) # [2,3]
方法2(使用tf.get_shape()
):
import tensorflow as tf
c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
Shape = c.get_shape().as_list()
print(Shape) # [2,3]
答案 4 :(得分:1)
另一种简单的解决方案是如下使用={drinks; food}
:
={IMPORTRANGE("ID", "B2:B100"); IMPORTRANGE("ID", "D2:D100")}
这会将所有map()
对象转换为tensor_shape = map(int, my_tensor.shape)
答案 5 :(得分:0)
在更高版本中(使用TensorFlow 1.14进行了测试),还有一种类似于numpy的方法来获得张量的形状。您可以使用tensor.shape
来获取张量的形状。
tensor_shape = tensor.shape
print(tensor_shape)