“Z”变量在表示Sigmoid函数的矩阵时未定义

我是一名高中生,刚开始学习机器学习以加深我的编程知识。我尝试使用Octave软件,并开始接触神经网络,至少是尝试着接触。在我的第一个程序中,我就遇到了Sigmoid梯度函数的难题。当我试图让函数对矩阵中的每个值都生效时,我不知道该怎么做。我尝试将z作为函数的参数,但系统提示“z”本身未定义。我对C或C++一无所知,在这个领域我还是个新手,所以如果我需要一些时间来理解,请见谅。感谢任何愿意提供帮助的人!

我正在使用Octave 4.4.1,我还没有尝试过其他解决方案,因为我实在是没有什么其他办法。

% 主代码    g = sigGrad([-2 -1 0 1 2]);% G应该是Theta的每个值的Sigmoid梯度,Theta是其参数中的矩阵。
% Sigmoid梯度函数    function g = sigGrad(z)    g = zeros(size(z));% 代码在这里告诉我z未定义    g = sigmoid(z).*(1.-sigmoid(z));% 我首先用z的大小初始化了一个零矩阵% 之后应该进行梯度方程的计算,但在之前就标记z未定义
% Sigmoid函数    g = sigmoid(z)    g = 1.0 ./ (1.0 + exp(-z));

回答:

从我所看到的,你犯了一些简单的语法错误,我建议你先了解Octave的基本知识,然后再深入代码。尽管如此,你必须使用正确的语法来声明你的函数,并像下面展示的那样使用它们:

function g = sigmoid(z)%   SIGMOID 计算Sigmoid函数%   J = SIGMOID(z) 计算z的Sigmoid值。g = 1.0 ./ (1.0 + exp(-z));end

另一段代码应该是这样的:

function g = sigGrad(z)%   sigGrad 返回在z处计算的Sigmoid函数的梯度%   g = sigGrad(z) 计算在z处评估的Sigmoid函数的梯度。%   无论z是矩阵还是向量,这都应该有效。%   特别是,如果z是向量或矩阵,你应该返回每个元素的梯度。g = zeros(size(z));g = sigmoid(z).*(1 - sigmoid(z));end

然后,最后使用以下方式调用上述实现的函数:

g = sigGrad([1 -0.5 0 0.5 1]);

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中创建了一个多类分类项目。该项目可以对…

发表回复

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