问题标签 [feed-forward]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

python - 神经网络模型如何为单层中的每个神经元学习不同的权重?

我对神经网络的工作原理有一个概述,并提出了一些相互关联的问题,但我无法找到答案。

考虑单隐藏层前馈神经网络:如果每个隐藏层神经元的功能相同

我们如何让模型学习不同的权重值?

我确实不明白神经元之间手动建立连接的意义。如图所示手动建立神经元之间的连接,这样我们就可以定义功能的可能功能(即,房屋大小和卧室数量加在一起可能代表房屋可能容纳的家庭规模)。但是完全连接的网络对我来说没有意义。

我明白一个完全连接的神经网络应该以某种方式自动定义,函数的哪些功能是有意义的,但它是如何做到的呢?

无法回答这个问题,我也不明白为什么要增加神经元的数量来提高模型预测的准确性

0 投票
1 回答
526 浏览

python - 为什么前馈神经网络中的简单二元分类会失败?

我是 Pytorch 的新手。我试图在开普勒数据集上建模一个二元分类器。以下是我的数据集类。

在这里,我创建了一个自定义分类器类,该分类器类具有一个隐藏层和一个输出单元,它产生属于类 1(行星)的 sigmoid 概率。

然后我创建了一个train_model函数来使用 SGD 优化损失。

但是在对 train_loader 执行优化之后,当我尝试对 trainn_loader 本身进行预测时,预测值要差得多。

为什么我的模型不能正常工作?是数据集的问题还是我在实现神经网络时做错了什么?我将链接我的 Kaggle 笔记本,因为更多上下文可能会有所帮助。请帮忙。

0 投票
1 回答
243 浏览

neural-network - pytorch:如何实现每个神经元一个链接?

例如,我想要一个具有以下结构的标准前馈神经网络:

  1. n 个输入神经元
  2. 第二层的 n 个神经元
  3. 第三层2个神经元
  4. 第四层的 n 个神经元

在哪里

  • 第一层的第 i 个神经元精确地连接到第二层的第 i 个神经元(不知道怎么做
  • 第二层和第三层是完全连接的,第三层和第四层也是如此(我知道怎么做 - 使用 nn.Linear)
  • 损失函数是前两层之间权重(向量)的 MSE + L1 范数(取决于我是否可以做到这一点的问题的解决方案)

动机:我想实现一个自动编码器并尝试实现一些稀疏性(这就是为什么输入乘以一个权重(从第一层到第二层))。

0 投票
1 回答
1604 浏览

python - Tensorflow 2.0:ValueError:维度0的切片索引0超出范围

我目前的任务是使用数字和有序分类数据执行二进制分类。

对于这项任务,我有效地复制了以下 Tensorflow 教程中的代码:https ://www.tensorflow.org/tutorials/structured_data/feature_columns

目前,我正在努力寻找发生以下错误的原因以及如何解决它。

错误:

代码:

数据

任何有关了解此错误发生的位置以及如何解决此问题的帮助都将非常棒!

**编辑:** 在 Google Colaboratory 中运行此程序后,运行时出现此错误model.fit()

0 投票
0 回答
25 浏览

tensorflow - Tensorflow NN 实现不收敛

我正在尝试仅使用 Tensorflow 实现一个简单的前馈神经网络,并且它没有收敛。我不确定问题出在网络架构还是训练过程实施中。使用 Keras 构建的简单 2 层 NN 似乎融合得很好:

这是我在 Tensorflow 中对同一网络的实现:

这是我的培训程序实施。在我的情况下,batch_size 是固定的,因此在每个时期,我将整个数据集逐批提供给网络。我在每批之后计算损失并将其添加到数组中。在每个时期之后,我取时期的批次损失数组的平均值以获得我的整体时期损失:

我的 Keras 实现仅在使用相同数量的隐藏层和隐藏层大小的 8 个 epoch 后才达到 0.75 损失,但我的 TF 实现即使在 15 个 epoch 之后仍然显示出大于 10 的损失。

有人可以指出为什么会这样吗?我猜这个问题与训练过程有关,而不是与实际的 NN 有关。

欢迎所有建议!

0 投票
0 回答
48 浏览

neural-network - 神经网络:精确的高级训练算法

我正在尝试使我的第一个神经网络工作。我设计它以便我可以自由选择层数和每层的节点数。我在尝试实现反向传播时遇到了困难,但我认为我已经递归地完成了它,即使它的性能不如它所能达到的那样。我使用 sigmoid 作为所有节点(甚至输入节点和输出节点)的激活。

我的网络在输出层有一个输出节点,应该预测一个变量(零或一)。

我的问题是我应该如何训练我的网络?我注意到当我使用以下算法时:

对于我在 [1:100000]

  1. 将相同的记录提供给我的神经网络
  2. 向前传球
  3. 使用差的平方作为当前权重的该记录的损失函数来计算误差
  4. 使用反向传播更新权重

它收敛到正确的结果(当记录标记为 0 时,输出节点值收敛到 0,当记录标记为 1 时收敛到 1)。但是,当我在每次迭代算法中向网络提供不同的记录时,网络就会完全发散。

假设我想处理一小批 N 条记录,这意味着我必须在每次 N 条记录中的一条作为网络输入时进行 N 次前向传递,计算误差,取 N 条记录的平均值记录,但是,当我想在反向传播算法中使用平均误差时,我应该使用什么输入记录?因为,据我所知,输入层也用于计算它与第一个隐藏层之间的权重。然后我应该使用 N 条记录中的最后一条作为输入吗?还是第一个?甚至有关系吗?我在这里有点困惑,我在互联网上找不到任何东西可以回答这个特定的问题。

此致。

0 投票
0 回答
38 浏览

python - 多输出神经网络模型

我有一个包含 15 个输入变量和 10 个输出变量的数据集(数据框),这些变量可以是分类变量或数值变量。(我在学习如何在这两种情况下使用 tensorflow 或 keras 进行处理)。我想开发一个深度学习模型,该模型可以基于向量 (1,15) 获得输出 (1,10)。输入=[[1,12,3,0.3.....]] 数值变量。输出 =[[0.3,0.2,1,3....]] 作为数值输出或 [[1,2,1,0..]] 作为分类变量

我已经回顾过,lstm 或 cnn 模型可以用于我的案例,但是在构建它时,开发一个生成该长度输出向量的模型有点令人困惑,就像在典型情况下,对于 n 个输入,只有预测 o被执行。属性或输出变量的分类。有些人对如何开发这种可以有多个输出的结构有一个想法

0 投票
1 回答
95 浏览

python - 前馈 ANN 对 MNIST 图像的测试准确度为 42%

我在 mnist 数据集上使用原始神经网络,但是我的模式卡在验证数据的 42% 准确度。

数据为 csv,格式为:60000 行(用于训练数据)和 785 列,第一个是标签。

以下是分割和转换 CSV 数据的代码,代表图像 (28x28):

以下是学习网络:

以下是我得到的结果:

这仅仅是因为优化器吗?我尝试了 SGD,但成功了!

0 投票
0 回答
28 浏览

c# - 我在前馈的输出中总是有一个额外的大数字,但其他数字接近于零

我有一个带有 10 个输出的感知器(完全连接的 cnn 层)。这些输出总是有一个或两个大的,而其他的则接近于零。我使用 ReLU 和 softmax 作为输出概率。这些奇怪输出的一些例子:


  1. 0.03676021
  2. 0.1569262
  3. 99.48537
  4. 0.03676021
  5. 0.03676021
  6. 0.03676021
  7. 0.03676021
  8. 0.10039
  9. 0.03676021
  10. 0.03676021

  1. 99.9898
  2. 5.67829E-11
  3. 3.183056E-11
  4. 9.487049E-12
  5. 0.004471419
  6. 4.597222E-11
  7. 0.005729798
  8. 5.412427E-11
  9. 1.847427E-12
  10. 6.115809E-09

  1. 0.06430105
  2. 0.06430105
  3. 0.06430105
  4. 98.25629
  5. 0.06430105
  6. 0.9340076
  7. 0.06430105
  8. 0.06430105
  9. 0.3595946
  10. 0.06430105

您还可以看到值非常相似。这是我的感知器代码:

以及卷积层的代码:

那么它实际上是一个问题吗,如果它是如何解决的 PS我还没有训练过cnn

0 投票
1 回答
58 浏览

python - 前馈神经网络总是输出随机但相似的值

我最近根据这本在线书籍和 Sebastian Lague 在 youtube 上关于神经网络的简短系列编写了一个神经网络。我尽可能忠实地对原始代码进行编码,但最终没有成功。我正在尝试用它解决一个简单的 XOR 问题,但它似乎总是给我随机但相似的值。我什至尝试复制和粘贴作者的代码,没有更改任何内容,但它仍然不起作用。

我对自己进行了一些调查,发现每次迭代的权重更新值总是很小且恒定。我不知道为什么,但看起来重量没有改变。我相信这可能是原因,因为当我在脚本开头设置种子时,输出值与 4dp 非常相似,但我不确定。我测试了前向传播,所以这不是问题。我还尝试随机化输入、改变学习率、不同的层大小和数量。我还尝试了一个感知器可以解决的不同问题集。这个问题是预测两个数字的总和是否大于其他数字。那也没有用。当我在各个时期绘制输出错误图时,它看起来像这样. 正如您从粗线中看到的那样,该值正在振荡并且似乎在下降。但是,当我对其进行测试时,它给出了完全错误的结果。

以下是我使用不同参数获得的一些输出:

学习率:100
layer_sizes:(2,2,1) epochs
:10000

学习率:1
layer_sizes:(2,5,5,1) epochs
:10000

学习率:1
layer_sizes:(2,2,1) epochs
:100