我一直试图编写人工神经元的代码,其中10个输入介于-1和1之间,10个随机权重也介于-1和1之间,所有值都正确到2个小数位。加上50%的随机权重需要为负数。输出需要是输入*权重的总和。代码需要使用Dev-C ++
在c编程中编写我已经阅读了很多与该主题相关的论文,而且我已经阅读了本网站上的一些教程,但没有一篇是用c语言编写的。
答案 0 :(得分:1)
给定权重向量,以下函数构造输入和权重的标量积,添加偏差项并将结果传递给sigmoid函数(未经测试):
#include<vector>
#include<algorithm>
#include<functional>
std::vector<double> weights; //initialize randomly between [-1,1], last entry contains bias
auto sigmoid=[](double x){return 1.0/(1.0-std::exp(x));};
auto neuron_output(std::vector<double> const& input)
{
double ret = std::inner_product(input.begin(), input.end(), weights.begin(), 0.0);
ret += weights.back(); //add bias
return sigmoid(ret); //apply sigmoid
}