如何将Tensorflow张量尺寸(形状)作为int值?

时间:2016-11-17 22:37:29

标签: python tensorflow machine-learning artificial-intelligence

假设我有一个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

6 个答案:

答案 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)