【问题标题】:Neural network hidden layer vs. Convolutional hidden layer intuition神经网络隐藏层与卷积隐藏层直觉
【发布时间】:2020-10-02 04:43:54
【问题描述】:

如果有 10 个特征和 1 个输出类(sigmoid 激活)具有回归目标:

如果我在我的第一个密集隐藏层中只使用 5 个神经元:第一个错误是否会仅基于训练特征集的一半来计算?是否必须将特征数与隐藏层 #1 中的神经元进行匹配,以便模型可以一次看到所有特征?否则它没有得到全貌?第一次 fwd 传播迭代将使用 10 个特征中的 5 个,并获得错误值(并在反向传播期间进行训练,假设批量梯度下降)。然后第 2 次 fwd 传播迭代将看到 10 个特征中剩余的 5 个具有更新的权重,并希望得到更小的误差。但它一次只能看到一半的功能!

相反,如果我有一个由 64 个神经元组成的卷积二维层。而我的训练形状是:(100, 28,28,1)(猫和狗的灰度图片),64 个神经元中的每一个会看到不同的 28x28 向量吗?不对,因为它一次只能通过前向传播发送一个示例?那么只有一张图片(猫或狗)应该跨越 64 个神经元?既然该层中的每个神经元都具有相同的过滤器、步幅、填充和激活函数,为什么要这样做呢?当你定义一个 Conv2D 层时……每个神经元的参数都是一样的。那么每个神经元只是训练示例的一部分吗?例如,为什么有 64 个神经元?只需要一个神经元,在其上使用一个过滤器,然后将其传递到第二个隐藏层,并使用另一个具有不同参数的过滤器!

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

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

【问题讨论】:

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


    【解决方案1】:

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

    所以你说的不会发生。如果您只有 5 个特征,那么接下来的 5 个特征将不会在下一次迭代中适合网络但是,下一个样本将被发送到模型。 (假设没有抛出异常)所以下一个示例也仅会使用前 5 个功能。

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

    我希望这会让它更清楚

    【讨论】:

      猜你喜欢
      • 2018-06-02
      • 1970-01-01
      • 2018-03-05
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2019-12-13
      相关资源
      最近更新 更多