问题标签 [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.
python - 处理python中参数化sigmoid函数中的错误
我正在尝试将一组数字转换为 sigmoid:
其中每个字典列表中的每个数字都cost_matrix
被不同的 sigmoid 函数标准化:
但是,当我运行它时,我得到:
数组变为:
请注意,每个成本总是大于 0,因此我在我的 sigmoid 函数中乘以 2 并减去 1。
我怎样才能适应这个没有这个错误?
java - 激活函数需要有多精确,其输入需要多大?
我正在用 Java 编写一个基本的神经网络,并且正在编写激活函数(目前我刚刚编写了 sigmoid 函数)。我正在尝试使用double
s (与 sBigDecimal
相对),希望培训实际上需要合理的时间。但是,我注意到该函数不适用于较大的输入。目前我的功能是:
这个函数返回非常精确的值,一直到 when t = -100
,但是当t >= 37
函数返回时1.0
。在一个典型的神经网络中,当输入被归一化时这很好吗?神经元会得到总和超过 37 的输入吗?如果输入到激活函数中的输入总和的大小从 NN 到 NN 不同,有哪些因素会影响它?另外,有什么方法可以使这个函数更精确吗?是否有更精确和/或更快的替代方案?
python - 虹膜数据集的神经网络
背景:我正在用 Python 编写一个三层神经网络,该网络使用小批量随机梯度下降,专门用于从著名的鸢尾花数据集中识别三类鸢尾植物。输入层有四个神经元,一个用于数据中的每个特征。隐藏层有 3 个神经元(但代码允许隐藏层神经元数量的变化),输出层有 3 个神经元(每个物种一个)。所有神经元都使用 sigmoid 激活函数。
问题:损失(均方误差)通常会随着时间的推移而降低,但准确度(通常低于 55.55% 甚至 33.33%)却停滞不前。我尝试过使用不同的迭代次数和学习率进行试验,但没有任何效果。有趣的是,无论输入值是什么,算法的输出通常都是固定的。我相当确定我的数学,因为随着时代数量的增加,损失似乎在减少。
复制问题:只需运行 Python 代码并观察 LEARNING_RESULTS.txt 文件。(确保 repo 中的 iris.txt 文件在同一目录中)
问题:如何提高此神经网络的性能?
GitHub 仓库链接:https ://github.com/kwonkyo/neural-networks
谢谢!
更新:问题解决了。我将一个常数值(小批量矩阵总和的数值总和)添加到权重和偏差矩阵,而不是小批量梯度矩阵的总和。更新的代码已推送到 github。
statistics - 自动查找 sigmoid 曲线的起始值
我有大约 10.000 个向量,我想为每个向量拟合一条 sigmoid 曲线;在每种情况下,我都需要定义拟合的起始参数,所以我想自动找到这些参数。在 stackexchange 上,讨论了为非线性模型(一、二)自动查找起始值的策略,但这些讨论考虑了一些特定情况,例如拟合高斯。是否也有可以应用于 sigmoid 曲线的一般策略?
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?
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 如何提供公平的分析呢?
machine-learning - 具有神经网络的线性系统中的 sigmoid() 或 tanh() 激活函数
我正在尝试构建一个神经网络来研究一个具有连续输出变量的问题。下面描述了所使用的神经网络的示意图
神经网络的示意图:输入层大小=1;隐藏层大小 = 8;输出层大小 = 1。
在这种情况下,有什么理由我应该使用 tanh() 激活函数而不是 sigmoid() 激活函数?我过去一直使用 sigmoid() 激活函数来解决使用神经网络的逻辑回归问题,我不清楚当有连续输出变量时是否应该使用 tanh() 函数。
它是否取决于连续输出变量的值?例如: (i) 当输出变量从 0 标准化到 1 时使用 sigmoid() (ii) 当输出变量具有负值时使用 tanh()。
提前致谢
neural-network - 在 System Verilog 中计算浮点值的 e^x?
我正在构建一个在 FPGA 上运行的神经网络,最后一块拼图是在硬件中运行一个 sigmoid 函数。这可以是:
或者
不幸的是,这里的 x 是一个浮点值(real
SystemVerilog 中的一个值)。
是否有关于如何在 SystemVerilog 中实现这些功能的任何提示?
这真的让我感到困惑,因为这两个函数都很复杂,而且由于浮点值增加了复杂性,我什至不知道从哪里开始实现它们。