繁体   English   中英

神经网络隐藏层 vs. 卷积隐藏层直觉

[英]Neural network hidden layer vs. Convolutional hidden layer intuition

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

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

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

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

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

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

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

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

我希望这能让它更清楚

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM