Программа искусственного нейрона

0

Я пытался написать код для искусственного нейрона с 10 входами между -1 и 1 с 10 случайными весами также между -1 и 1 всеми значениями, соответствующими двум десятичным знакам. Плюс в 50% случаев случайные веса должны быть отрицательными. Выходом должна быть сумма входов * вес. Код должен быть написан в c-программировании с использованием Dev-С++

Я прочитал много документов, связанных с темой, а также прочитал некоторые учебники на этом сайте, но ни один из них не был на языке c.

  • 0
    Из текста вы, кажется, интересуетесь программами на Си, но по какой-то причине, за пределами моего ограниченного понимания, вы пометили вопрос sql-server , что обычно нельзя ассоциировать с нейронными сетями. Вы уверены, что это то, что вы хотели?
  • 0
    Я новичок в стек переполнения. Там сказано хотя бы тэг sql-сервера
Показать ещё 2 комментария
Теги:

1 ответ

1

Для вектора весов следующая функция строит скалярное произведение входных данных и весов, добавляет член смещения и передает результат в сигмоидальную функцию (непроверенную):

#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
    почему бы просто не double sigmoid(double x){return 1.0/(1.0-std::exp(x)); } ? В чем преимущество лямбды, присваиваемой переменной по отношению к простой функции?
  • 0
    @ Emilio Garavalia: я определенно слишком много читаю о C ++ 11 :-)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню