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

////////////////////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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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