由tf.zeros(n)创建的张量的维数

时间:2019-03-16 18:34:15

标签: tensorflow

我对用tf.zeros(n)创建的张量的尺寸感到困惑。例如,如果我写:tf.zeros(6).eval.shape,这将返回我(6, )。这是什么尺寸?这是6行和任意列数的矩阵吗?还是这是6列矩阵,其中包含任意行数?

weights = tf.random_uniform([3, 6], minval=-1, maxval=1, seed=1)-这是3X6矩阵

b=tf.zeros(6).eval-我不确定这是什么尺寸。

为什么我可以像weights+b那样添加两个?如果我理解正确,那么为了添加两者,b必须是3X1维度。

2 个答案:

答案 0 :(得分:0)

(6,)是将6作为单个元素的元组的python语法。因此,这里的形状是长度为6的一维向量。

答案 1 :(得分:0)

为什么我可以添加两个类似#Output: Dict for dataframe: {'Country': ['France', 'France'], 'Club': ['Angers', 'Bastia'], 'Founded': ['1919', '1905']} Dataframe: Country Club Founded 0 France Angers 1919 1 France Bastia 1905 的东西?

运算符weights+b与使用+相同(tf.add()称为<obj>.__add__()tf.add()),如果您阅读了documentation,说:

  

注意:math.add支持广播。 AddN没有。有关广播here

的更多信息

现在我引用tf.math.add()广播规则(与numpy相同):

  

在两个数组上操作时,NumPy逐元素比较它们的形状。它从尾随尺寸开始,一直向前发展。何时兼容两个维度

     
      
  1. 他们相等,或者
  2.   
  3. 其中之一是1
  4.   

因此,您可以添加两个具有不同形状的张量,因为它们的拖尾尺寸相同。如果将tensorflow张量的尺寸更改为weights,则由于尾随尺寸不同,您将获得[3, 5]异常。