목록분류 전체보기 (101)
wintertreey 님의 블로그

학습단계는 feedforward 순전파,back propagation 역전파,epoch를 이용해 반복학습을 통해 경사기울기를 줄여 가까워지는것이다. feedforwarddouble sigmoid(double z) { return 1.0 / (1.0 + exp(-z));}vector feedforward(const vector& input, vector& hiddenLayer) { hiddenLayer.resize(w1[0].size()); vector outputLayer(w2[0].size()); for (int j = 0; j 활성화함수로 시그모이드 함수를 사용하였다. feedforward 안에 정의하여 사용할까 하다가, 역전파때 미분하여 쓸것이기에 밖에 선언해주었다. 은닉층 노드값들을 저장할 hi..

앞선 포스팅에선 데이터 전처리과정을 공부했다.그러면 이번엔 초기화 부분을 알아보자. initialization이번에 구현할 신경망의 경우, 은닉층을 1개로 할 예정.입력층의 뉴런수(inputSize), 출력층의 뉴런수(outputSize)의 경우 이미 데이터로 정해져있다.내가 정해야 할것은 은닉층의 뉴런수(hiddenSize)이고(이건 메인함수에서 설정해줄 예정)초기화해야할 것은 가중치w 와 바이어스b이다. void initializeWeights(int inputSize, int hiddenSize, int outputSize) { w1.resize(inputSize, vector(hiddenSize)); w2.resize(hiddenSize, vector(outputSize)); b1.resize..

데이터전처리저장해둔 데이터 경로를 찾아 읽어오고, readFile데이터 정규화작업을 해주고, normalization데이터를 분리해주어야한다. separate 내가 가진 데이터파일의 형태는 다음과 같다. A2 A3 A4 A5 .... A54 Y1.95173 115.151 27.2738 72.2082 ...1.97996 115.486 27.0532 72.2082 ...2.02079 115.316 27.0514 72.2082 ...2.0012 115.338 27.3179 72.2082 ......55*54의 형태. readFile읽어오는 작업에 대한 설명은 패스. Normalization데이터의 값이 제각각. 각 값들의 영향력을 제어하기 위해 0~1사이로 맞춰주는 작업.vector> normalizati..

퍼셉트론 Perceptron퍼셉트론은 이러한 신경망의 가장 기본적인 구성요소다수의 입력으로부터 하나의 결과를 내보내는 알고리즘.단층 퍼셉트론(Single Layer Perceptron)입력층, 출력층만 존재.단층 퍼셉트론은 입력 값과 가중치를 곱한 후 합산하여, 특정 활성화 함수를 통해 결과를 출력.XOR 문제와 같은 비선형 문제를 해결하지 못하는 한계가 있음. 다층 퍼셉트론(MultiLayer Perceptron, MLP)중간에 층을 추가하여 은닉층이 존재하는 퍼셉트론. 여러 개의 은닉층(Hidden Layer)을 가진 신경망으로, 비선형 문제를 해결할 수 있다.각 층은 입력값을 받아 가중치를 곱하고 활성화 함수를 적용한 후, 다음 층으로 전달.다층 퍼셉트론에 여러 층이 더해지면 **심층 신경망(Dee..

배열: 여러가지 값들을 저장하고 처리하는 방법 중 하나배열의 경우 중간의 원소를 삭제하거나, 중간에 값을 삽입할때는 굉장히 비효율적.이러한 단점을 보완하기 위해 사용하는것이 바로 연결 리스트. 연결리스트에 접근하기 위해 헤드 포인터 즉 첫 번째 노드를 가르키는 포인터 값만 알면 리스트 안의 모든 노드에 접근이 가능하다. 구조체를 선언하고 정수형 데이터를 저장할 수 있는 단일 연결 리스트를 구현해보자. 1. 구조체선언struct Node { int data; Node* next;}; data: 노드에 저장할 데이터 next: 다음 노드의 주소 저장할 포인터 2. 개별 노드 초기화void initNode(Node*& head, int data) { head = new Node; head->..

행렬//#include #include int main() { int matrix[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; std::cout #include 헤더파일#include #include c 스타일cpp 객체 지향 스타일printf, scanf 등 사용시std::cout, std::cin 사용시 작성 코드는 c++기준이므로 을 사용하여 입출력을 할 예정. 출력시 주의std::cout 주석 처리되었던 코드가 처음 작성했던 코드.다음과같이 작성하면 std::endl에 의해 값 하나마다 줄바꿈이 발생. 4*4 즉 행렬의 모양새로 출력을 하고자 한다면 줄바꿈은 바깥 for문에 넣어주는 작업을 해야한다. 전치행렬 전..
며칠전 뜬금없이 break문의 흐름에 의문을 가졌던 적이 있었다. (당황)(당황)생각난김에 확실히 머리속에 정립하고자 글을 쓰기로 햇다. break 와 continue break문public class BreakExample { public static void main(String[] args) { for (int row = 0; row 출력결과더보기(0, 0) (0, 1) (0, 2) (0, 3) (0, 4) (1, 0) (1, 1) (1, 2) (1, 3) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) Done.row가 0일때, col 0-4까지 출력row가 1일때, col 0-3까지 출력하고 break문만나 내부 for문 나옴.row가 2일때, col 0-..