我一直在尝试写一个人工神经元的代码,它有10个输入在-1和1之间,10个随机权重也在-1到1之间,所有的值都正确到小数点后2位。加上50%的时间,随机权重需要为负。输出需要是输入*权重的总和。代码需要使用Dev-C++用c编程编写。
我已经读了很多关于这个主题的论文,我也在这个网站上读了一些教程,但没有一篇是用c语言写的。
发布于 2014-11-07 16:29:55
给定权重向量,下面的函数构造输入和权重的标量积,添加偏差项并将结果传递到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
}https://stackoverflow.com/questions/26779035
复制相似问题