首页 > 解决方案 > TensorFlow:张量形状与 Numpy 数组形状

问题描述

在 tf.shape() 中,张量的形状与 numpy 数组的形状有何不同?

示例 1:

t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]) 
tf.shape(t) 

 <tf.Tensor: shape=(3,), dtype=int32, numpy=array([2, 2, 3], dtype=int32)>

注意张量的形状是(3,),而数组的形状是[2, 2, 3]:2 行,2 列,每行有 3 层深。来自哪里(3,)为什么第二个维度None在 3 之后?

示例 2:

c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
tf.shape(c)

  <tf.Tensor: shape=(2,), dtype=int32, numpy=array([2, 3], dtype=int32)>

请注意,张量的形状(2,)与数组中的 2 匹配[2, 3]为什么它在这里匹配,但在示例 1 中不匹配?

谢谢。

标签: pythonnumpytensorflow

解决方案


张量的形状由 numpy 数组形状的长度定义。例如 -

t = tf.constant([[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]],[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]]) 
tf.shape(t)

将输出

<tf.Tensor: shape=(4,), dtype=int32, numpy=array([2, 2, 2, 3], dtype=int32)>

要获得张量的大小,请使用

t.shape

反而。


推荐阅读