我对用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
维度。
答案 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
因此,您可以添加两个具有不同形状的张量,因为它们的拖尾尺寸相同。如果将tensorflow
张量的尺寸更改为weights
,则由于尾随尺寸不同,您将获得[3, 5]
异常。