[딥러닝] C++로 역전파(Back-propagation) 구현하기

2016. 5. 31. 11:45·IT기술 관련/A.I 인공지능
반응형

출처: https://www.youtube.com/watch?v=XmK9f5IV8Uw#t=568.604741



#include <stdio.h>

#include <iostream>


#define MAX2(a,b) (a) > (b) ? (a) : (b)


class Neuron

{

public:

Neuron()

: w_(2.0),b_(1.0)

{}


Neuron(const double& w_input, const double& b_input)

: w_(w_input),b_(b_input)

{}



public: // attributes

double w_; // weight of one input

double b_; // bias


double input_, output_; //saved for back-prop


public: // behaviors

double getAct(const double& x)

{

// for linear or identity activation functions

return x;


// for ReLU activation functions

//return MAX2(0.0, x);

}


double feedForward(const double& _input)

{

input_ = _input;

// output y = f(\sigma) , 

// \sigma = w_ * input x + b

// for multiple inputs,

// \sigma = w0_ * x0_ + w1_ * x1_ + ... + b


const double sigma = w_ * input_ + b_;

output_ = getAct(sigma);

return output_;

}


double getActGrad(const double& x)

{

return 1.0;

}


void propBackward(const double& target)

{

const double alpha = 0.1; // learning rate


const double grad = (output_ - target) * getActGrad(output_);


w_ -= alpha * grad * input_; // last input_ came from d(wx+b)/dw = x

b_ -= alpha * grad * 1.0; // last 1.0 came from d(wx+b)/db = 1


}

void feedForwardAndPrint(const double& input)

{

printf("%f %f \n", input, feedForward(input));

}

};


void main()

{

// initialize my_neuron

Neuron my_neuron(2.0, 1.0);


for (int r = 0; r < 100; r++)

{

std::cout << "Training :: " << r << std::endl;

my_neuron.feedForwardAndPrint(1.0);

my_neuron.propBackward(4.0);

my_neuron.feedForwardAndPrint(1.0);

std::cout << "w =  " << my_neuron.w_ << " b =  " << my_neuron.b_ << std::endl;


}



}





반응형
저작자표시 (새창열림)

'IT기술 관련 > A.I 인공지능' 카테고리의 다른 글

컨볼루션 네트워크  (0) 2016.06.01
몬테카를로 트리서치, 무작위 시뮬레이션 통해 승률계산  (0) 2016.06.01
[딥러닝] C++로 구현하는 뉴런 기초  (0) 2016.05.31
Deep Learning Tutorial  (0) 2016.05.29
모두의 연구소 - 딥러닝 강의  (0) 2016.05.29
'IT기술 관련/A.I 인공지능' 카테고리의 다른 글
  • 컨볼루션 네트워크
  • 몬테카를로 트리서치, 무작위 시뮬레이션 통해 승률계산
  • [딥러닝] C++로 구현하는 뉴런 기초
  • Deep Learning Tutorial
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    대통령
    런치
    수제버거맛집
    점심
    판교역
    판교맛집
    복리후생
    쥬쥬랜드
    상호관세
    판교
    수제버거존맛
    맛집
    수제버거
    유니티
    돈까스
    무역전쟁
    AWS
    마케팅
    보안가이드
    이재곧죽습니다
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[딥러닝] C++로 역전파(Back-propagation) 구현하기
상단으로

티스토리툴바