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

如果有10个特征和1个输出类别(使用sigmoid激活函数)进行回归任务:

如果我在第一个全连接隐藏层中只使用5个神经元:第一个误差是否仅基于训练特征集的一半来计算?难道不应该将特征数量与第一隐藏层的神经元数量匹配,以便模型能够一次看到所有特征吗?否则它就无法获得全貌?第一次前向传播迭代将使用10个特征中的5个,得到误差值(并在反向传播时进行训练,假设使用批量梯度下降)。然后,第二次前向传播迭代将看到剩余的5个特征,并使用更新后的权重,希望能得到更小的误差。但它每次只能看到一半的特征!

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

请解释我逻辑中的错误。非常感谢。

编辑:我刚刚意识到对于Conv2D,你需要将训练数据集展平为一个一维向量,所以一张28×28的图片意味着输入conv2d层需要724个神经元。但我对全连接神经网络(上面的第一段)仍然感到困惑


回答:

你的“第一”层是什么?通常情况下,第一层是输入层,它不包含任何权重。输入层的形状必须与你的特征数据的形状匹配。因此,当你训练一个具有10个特征的模型,但输入层的形状为(None,5)(其中None代表批量大小)时,TensorFlow会抛出异常,因为它需要所有输入的正确形状的数据。

所以你所说的情况不会发生。如果你只有5个特征,接下来的5个特征不会在下一轮迭代中被纳入网络中,而是,下一批样本会被发送到模型中。(假设没有抛出异常)所以下一批样本中也会使用前5个特征。

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

希望这能使你更清楚

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注