问题标签 [sigmoid]

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 回答
2161 浏览

python - 处理python中参数化sigmoid函数中的错误

我正在尝试将一组数字转换为 sigmoid:

其中每个字典列表中的每个数字都cost_matrix被不同的 sigmoid 函数标准化:

但是,当我运行它时,我得到:

数组变为:

请注意,每个成本总是大于 0,因此我在我的 sigmoid 函数中乘以 2 并减去 1。

我怎样才能适应这个没有这个错误?

0 投票
1 回答
671 浏览

python - 使用 Sigmoid 代替 Tanh 激活函数失败 - 神经网络

我正在查看此博客中的以下代码

它提供了同时使用sigmoidtanh激活函数的选项。

XOR 测试似乎与产生的函数配合得很好tanh~(0,1,1,0)

但是在更改为sigmoid我得到错误的输出〜(0.5,0.5,0.5,0.5)

我已经用我在网上找到的另一段代码尝试了这个,并且出现了完全相同的问题。

似乎唯一改变的是激活函数(及其导数)。改变这一点是否需要其他改变,比如反向传播?

非常感谢您的帮助!

0 投票
2 回答
116 浏览

java - 激活函数需要有多精确,其输入需要多大?

我正在用 Java 编写一个基本的神经网络,并且正在编写激活函数(目前我刚刚编写了 sigmoid 函数)。我正在尝试使用doubles (与 sBigDecimal相对),希望培训实际上需要合理的时间。但是,我注意到该函数不适用于较大的输入。目前我的功能是:

这个函数返回非常精确的值,一直到 when t = -100,但是当t >= 37函数返回时1.0在一个典型的神经网络中,当输入被归一化时这很好吗?神经元会得到总和超过 37 的输入吗?如果输入到激活函数中的输入总和的大小从 NN 到 NN 不同,有哪些因素会影响它?另外,有什么方法可以使这个函数更精确吗?是否有更精确和/或更快的替代方案?

0 投票
0 回答
1708 浏览

python - 虹膜数据集的神经网络

背景:我正在用 Python 编写一个三层神经网络,该网络使用小批量随机梯度下降,专门用于从著名的鸢尾花数据集中识别三类鸢尾植物。输入层有四个神经元,一个用于数据中的每个特征。隐藏层有 3 个神经元(但代码允许隐藏层神经元数量的变化),输出层有 3 个神经元(每个物种一个)。所有神经元都使用 sigmoid 激活函数。

问题:损失(均方误差)通常会随着时间的推移而降低,但准确度(通常低于 55.55% 甚至 33.33%)却停滞不前。我尝试过使用不同的迭代次数和学习率进行试验,但没有任何效果。有趣的是,无论输入值是什么,算法的输出通常都是固定的。我相当确定我的数学,因为随着时代数量的增加,损失似乎在减少。

复制问题:只需运行 Python 代码并观察 LEARNING_RESULTS.txt 文件。(确保 repo 中的 iris.txt 文件在同一目录中)

问题:如何提高此神经网络的性能?

GitHub 仓库链接:https ://github.com/kwonkyo/neural-networks

谢谢!

更新:问题解决了。我将一个常数值(小批量矩阵总和的数值总和)添加到权重和偏差矩阵,而不是小批量梯度矩阵的总和。更新的代码已推送到 github。

0 投票
1 回答
78 浏览

statistics - 自动查找 sigmoid 曲线的起始值

我有大约 10.000 个向量,我想为每个向量拟合一条 sigmoid 曲线;在每种情况下,我都需要定义拟合的起始参数,所以我想自动找到这些参数。在 stackexchange 上,讨论了为非线性模型(一)自动查找起始值的策略,但这些讨论考虑了一些特定情况,例如拟合高斯。是否也有可以应用于 sigmoid 曲线的一般策略?

0 投票
1 回答
255 浏览

machine-learning - Big number of input neurons causes large weighed sum

I'm trying to create a neural network for my University project and have run into a problem. The network is to be used for image recognition for recognizing 320 x 200 pixel images. This means, that the number of input neurons in my network is 64.000 (320 * 200).

The problem is, that when calculating the weighed sum in each neuron in the hidden layer, I get very large numbers. When calculating the weighted sum because of this, I get results like 16000. This is my code for calculating the weighted sum, hope it clarifies what I do.

I won't get into details with the code, but the concept of it is multiplying each weight with the corresponding input value. Naturally, when I get output activations of for example 16.000 or -16.000, then running the Sigmoid function will always return 0 or 1.

My question is: Is there some way to get around this, to "normalize" the weighed sum so that the Sigmoid function will return other than 0 or 1, or is it simply a question of having a very large number of neurons in the hidden layer, or scaling down the image?

0 投票
1 回答
3537 浏览

python - Sigmoid 总是返回 1?

考虑以下:

我的理解是sigmoid结果的范围是0到1。根据这篇文章(http://clear-lines.com/blog/post/Logistic-Regression.aspx):

“正值将返回大于 0.5 的值,输入值越大,越接近 1。可以将函数视为返回概率:对于非常高或低的 x 值,有很高的确定性它属于两组之一,对于接近零的值,每组的概率为 50% / 50%。”

但是,如果它是 Sigmoid(0),sigmoid 似乎只产生 0.5(即零分类)。除非 inX 或 weights 为零(或零向量),否则分类向量不会总是返回 1 吗?

例如,考虑以下数据:

在这里,inX 永远不会为零。如果计算出数学,权重也不会为零。那么,sigmoid 如何提供公平的分析呢?

0 投票
1 回答
471 浏览

neural-network - 具有用于 OR 函数的 sigmoid 神经元的简单非线性边界

在此处输入图像描述在此处输入图像描述我想计算带有输入层和输出层的 sigmoid 神经元的非线性边界。神经元有 2 个输入 x1、x2 和一个偏差。我正在尝试计算这个。

这是怎么做的。对于感知器,如果

直到错误减少到一个较低的值。我正在使用 Octave 进行此计算。

是否有 Sigmoid 神经元的迭代方法。我们如何获得非线性边界?

0 投票
1 回答
947 浏览

machine-learning - 具有神经网络的线性系统中的 sigmoid() 或 tanh() 激活函数

我正在尝试构建一个神经网络来研究一个具有连续输出变量的问题。下面描述了所使用的神经网络的示意图

神经网络的示意图:输入层大小=1;隐藏层大小 = 8;输出层大小 = 1。

在这种情况下,有什么理由我应该使用 tanh() 激活函数而不是 sigmoid() 激活函数?我过去一直使用 sigmoid() 激活函数来解决使用神经网络的逻辑回归问题,我不清楚当有连续输出变量时是否应该使用 tanh() 函数。

它是否取决于连续输出变量的值?例如: (i) 当输出变量从 0 标准化到 1 时使用 sigmoid() (ii) 当输出变量具有负值时使用 tanh()。

提前致谢

0 投票
5 回答
1493 浏览

neural-network - 在 System Verilog 中计算浮点值的 e^x?

我正在构建一个在 FPGA 上运行的神经网络,最后一块拼图是在硬件中运行一个 sigmoid 函数。这可以是:

或者

不幸的是,这里的 x 是一个浮点值(realSystemVerilog 中的一个值)。

是否有关于如何在 SystemVerilog 中实现这些功能的任何提示?

这真的让我感到困惑,因为这两个函数都很复杂,而且由于浮点值增加了复杂性,我什至不知道从哪里开始实现它们。