Я пытался написать код для искусственного нейрона с 10 входами между -1 и 1 с 10 случайными весами также между -1 и 1 всеми значениями, соответствующими двум десятичным знакам. Плюс в 50% случаев случайные веса должны быть отрицательными. Выходом должна быть сумма входов * вес. Код должен быть написан в c-программировании с использованием Dev-С++
Я прочитал много документов, связанных с темой, а также прочитал некоторые учебники на этом сайте, но ни один из них не был на языке c.
Для вектора весов следующая функция строит скалярное произведение входных данных и весов, добавляет член смещения и передает результат в сигмоидальную функцию (непроверенную):
#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
}
double sigmoid(double x){return 1.0/(1.0-std::exp(x)); }
? В чем преимущество лямбды, присваиваемой переменной по отношению к простой функции?
sql-server
, что обычно нельзя ассоциировать с нейронными сетями. Вы уверены, что это то, что вы хотели?