我的问题是,我认为这太简单了,但这让我头疼。我想我在神经网络中缺少概念上的东西,或者Tensorflow返回了错误的图层。
我有一个网络,最后一层输出4800个单元。倒数第二层有2000个单位。我希望最后一层的权重矩阵具有形状(4800,2000),但是当我在Tensorflow中打印形状时,我看到(2000,4800)。请问有人可以确认最后一层应该具有哪种形状的权重矩阵?根据答案,我可以进一步调试问题。谢谢。
答案 0 :(得分:2)
从概念上讲,神经网络层通常像ConstraintLayout
这样写,其中*是矩阵乘法,LinearLayout
是输入向量,y = W*x
是输出向量。如果x
的单位为2000,y为4800,则实际上y
的大小应为x
,即4800行和2000列。
但是,在实现中,我们通常处理输入W
的批处理。假设(4800, 2000)
是X
,其中X
是您的批量大小。我们不希望通过如上所述的(b, 2000)
来分别变换b
的每个元素,因为这样效率低下。
相反,我们希望同时转换所有输入。可以通过X
完成,其中W*x
是Y = X*W.T
的转置。您可以得出结论,这实际上将W.T
应用于W
的每一行(即每个输入)。那么W*x
是一个X
矩阵,其中包含所有转换后的输入。
在Tensorflow中,权重矩阵只是以这种转置状态保存,因为通常无论如何通常都是需要的形式。因此,我们有一个形状为Y
(形状为(b, 4800)
)的矩阵。