权重矩阵最终完全连接层

时间:2018-07-31 08:32:26

标签: python-3.x tensorflow conv-neural-network

我的问题是,我认为这太简单了,但这让我头疼。我想我在神经网络中缺少概念上的东西,或者Tensorflow返回了错误的图层。

我有一个网络,最后一层输出4800个单元。倒数第二层有2000个单位。我希望最后一层的权重矩阵具有形状(4800,2000),但是当我在Tensorflow中打印形状时,我看到(2000,4800)。请问有人可以确认最后一层应该具有哪种形状的权重矩阵?根据答案,我可以进一步调试问题。谢谢。

1 个答案:

答案 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*xY = X*W.T的转置。您可以得出结论,这实际上将W.T应用于W的每一行(即每个输入)。那么W*x是一个X矩阵,其中包含所有转换后的输入。

在Tensorflow中,权重矩阵只是以这种转置状态保存,因为通常无论如何通常都是需要的形式。因此,我们有一个形状为Y(形状为(b, 4800))的矩阵。