2014-11-06 64 views
0

我一直在尝试写的代码,以-1到1之间10路输入与10点随机的权重也为-1和1个的所有值正确之间为2位小数的人工神经。加上50%的随机权重需要为负数。输出需要是输入*权重的总和。需要使用开发 - C++人工神经计划

我已经读了很多有关该主题的论文,也是我读过关于这个网站还没有一个是在C语言中一些教程C编程要写入的代码。

+0

您从出现文本对C程序感兴趣,但由于某种原因超出了我的有限理解范围,您已经标记了“sql-server”这个问题,这通常与神经网络无关。你确定这是你的意图吗? – paxdiablo 2014-11-06 12:08:04

+0

我是新来堆栈溢出。它说,至少标签sql-server – 2014-11-06 12:14:49

+0

我已经尝试使用数组的输入和权重与浮点数像这样float [] inputs = {-1; 1}和相同的权重,但它给出了一个错误当我遵从说我需要一个“(”之前[ – 2014-11-06 12:46:42

回答

1

鉴于权重的向量,下面的函数构造的输入和的权重的标量积,加偏项并将结果传递到S形函数(未测试):

#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 
} 
+0

为什么不'双S(双X) {return 1.0 /(1.0-std :: exp(x));}'?对于一个普通函数,lambda被赋予一个变量的优点是什么? – 2014-11-07 08:36:31

+0

@Emilio Garavalia:我肯定读了太多关于C++ 11 :-) – davidhigh 2014-11-07 08:38:26

+0

@Emilio Garavalia:但是如果你想拥有一个(小而可能不相关的)优势:你可以调用'sigmoid' - >'activation',然后有条件地设置激活函数。这不需要对函数进行硬编码(当然,使用类层次结构也可以获得相同的结果,但输入的内容更多)。 – davidhigh 2014-11-07 08:42:04