两个数组的值相乘(人工神经元)

////////////////////MAKE INPUT VALUES////////////////////double *NumOfInputsPointer = NULL;std::cout << "有多少个输入?" << std::endl;int NumOfInputs;std::cin >> NumOfInputs;NumOfInputsPointer = new double[NumOfInputs];std::cout << std::endl;double InputVal;for(int a = 0; a < NumOfInputs; a++){    std::cout << "输入" << a << "的值是多少?" << std::endl;    a+1;    std::cin >> InputVal;    *(NumOfInputsPointer + a) = InputVal;}std::cout << std::endl;////////////////////MAKE WEIGHTS////////////////////double *NumOfWeightsPointer = NULL; int NumOfWeights;NumOfWeightsPointer = new double[NumOfWeights];double WightVal;for(int a = 0; a < NumOfInputs; a++){    *(NumOfWeightsPointer + a) = 0.5;}////////////////////Multiplication BRAIN BROKE!!!!!////////////////////double *MultiplyPointer = NULL;MultiplyPointer = NumOfInputsPointer;for(int a = 0; a < NumOfInputs; a++){      //Stuff to do things }

上面的代码将会创建一个单一人工神经元。我已经构建了代码来创建一个数组,包含用户所需的输入数量,并自动将每个输入的权重设为0.5。

我遇到的障碍导致我在处理输入值数组与其权重数组相乘时遇到了困难,然后将这些结果保存到另一个数组中,以便稍后进行相加并通过一个修改器处理。

我的困难在于乘法操作和将结果保存到数组中。我希望我已经足够清楚地解释了我的问题。


回答:

就像你对其他数组所做的那样,使用new来创建它,并将乘法的结果存储在那里。

MultiplyPointer = new double[NumOfInputs];for (a = 0; a < NumOfInputs; a++) {    MultiplyPointer[a] = NumOfWeightsPointer[a] * NumOfInputsPointer[a];}

尽管如此,解决你的问题还有更好的方法。有人提到了std::vector,它可以使内存管理和循环部分变得更简单。我会更进一步,引入一个包含矩阵和矩阵表达概念的库,例如OpenCVdlib

使用OpenCV中的Mat的示例:

cv::Mat input(NumOfInputs, 1, CV_64F, NumOfInputsPointer);cv::Mat weights(NumOfInputs, 1, CV_64F, cv::Scalar(0.5));cv::Mat result = input.mul(weights);

如果权重向量不需要被修改和重用,可以跳过整个过程:

cv::Mat result = input.mul(cv::Scalar(0.5));

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

发表回复

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