神经网络隐藏层与卷积隐藏层直觉

时间:2020-10-02 04:43:54

标签: python tensorflow machine-learning deep-learning neural-network

如果有10个要素和1个具有回归目标的输出类(S型激活):

如果在我的第一个密集隐藏层中仅使用5个神经元:是否仅根据训练特征集的一半来计算第一个误差?将特征#与隐藏层1中的神经元进行匹配不是强制性的,以便模型可以一次看到所有特征吗?否则,无法获得全部图像?第一个fwd传播迭代将使用10个特征中的5个,并获得误差值(并在反向传播期间进行训练,假定批次渐变下降)。然后,第二次fwd传播迭代将看到权重已更新的10个特征中的其余5个,并有望得出较小的误差。但是一次只能看到一半的功能!

相反,如果我具有64个神经元的卷积2D层​​。我的训练形状是:(100,28,28,1)(灰度图中的猫和狗的图片),这64个神经元中的每一个会看到不同的28x28向量吗?不对,因为它一次只能通过前向传播发送一个示例?那么,只有单个图片(猫或狗)应该跨越64个神经元吗?您为什么要这么做,因为该层中的每个神经元都具有相同的过滤,跨距,填充和激活功能?当您定义Conv2D层时...每个神经元的参数都相同。那么,训练示例中只有一部分进入每个神经元吗?例如,为什么有64个神经元?仅拥有一个神经元,在其上使用过滤器,然后将其传递到另一个具有不同参数的过滤器的隐藏层!

请解释我的逻辑缺陷。非常感谢。

编辑:对于Conv2D,我刚刚意识到,您将训练数据集展平,使其成为1D向量,因此28x28图像将意味着具有724个神经元的输入conv2d层。但是我仍然对密集的神经网络感到困惑(上面的第1段)

1 个答案:

答案 0 :(得分:1)

您的“第一”层是什么? 通常,您有一个输入层作为第一层,其中不包含任何权重。 输入图层的形状必须必须与要素数据的形状匹配。 因此,基本上,当您训练一个具有10个特征的模型,但只有一个形状为(None,5)的输入层(其中没有一个代表batch_size)时,tensorflow会引发异常,因为它需要 all 的所有数据以正确的形状输入。

所以您所说的只是不会发生。如果您只有5个特征,则接下来的5个特征将不会在下一次迭代中放入网络但是,下一个示例将被发送到模型中。 (可以说不会抛出异常)因此,在下一个示例中,也将使用前五个功能。

您可以做的是,使用input_layer作为具有正确形状特征的第一层。然后,作为secodn层,您可以使用任何喜欢的形状,1,10,100个密集神经元,取决于您的形状(当然效果很好)。 输出的形状再次必须(这次)匹配标签数据的形状。

我希望这可以使它更清楚