전체 글 482

[cs231n] CNN

공간적으로 이미지를 슬라이스하면서 dot products를 해나가는 것입니다.  처음에 32 X 32 X 3의 input을 받았을 때  actviation 관점에서 28 X 28 X 6의 새로운 형태의 이미지로 Rerepresentation 했다고 칠 때 다음 input으로 전달이 됩니다. 이미지를 받았고 Convolution layer를 돌리면 6, 5X5X3 -> 28X28X6 Activation volume을 얻게 되고10, 5X5X6의 필터를 거친다면  -> 24X24X6 형태가 됩니다.  제어를 해야하는 파라미터는 당연히 필터의 하나하나의 값들이 됩니다. CONV - RELU - POOL 반복하고 계산하는 방식으로 합니다. 공간의 차원에 대해 생각을 해보면 32X32X3 의 이미지에 5X5X3F..

[cs231n] Training NN

1960년대 퍼셉트론을 쌓아가기 시작하는데 이때 최초의 멀티 layer 퍼셉트론 network가 되지만 hardware였습니다. 이때 가중치들 즉 어떤 파라미터의 approach를 도입한 것만으로도 큰 도약으로 보이며 이에 대한 기대가 매우 컸습니다. 하지만 이후  컴퓨터의 성능 등의 문제로 효과는 미치지 못했으며 80년대 중반까지는 신경망의 암흑기라 불리는 침체기로 접어들게 되었습니다.  이후 1986년에 제프리 힌턴 교수님 등 공저자가 포함된 back-propagation을 도입하며 이는 미분이 가능하며 가중치를 체계적인 방법으로 찾아갈 수 있다는 것을 의미합니다.  2006년 경 각 단계 RBM을 이요해서 학습 시키고 계속하고 학습시키면서 각각 선행학습을 시킨 다음에 이들을 큰 덩어리로 묶어서 ba..

[cs231n] 3강 Neural Network NN

Neural network를 보면 히든 레이어에 100개의 히든 노드가 있다고 가정하고  하나의 feature를 감당한다고 할 때, 100개 중에 한개의 히든 노드는 빨간색의 자동차를 담당하는 노드다 이런 식으로 표현할 수 있습니다. 하나의 뉴런이 여러개가 연결이 되면서 전달반복이 일어나게 됩니다. 유사하게 본다면 x0이라는 데이터가 들어와서 w0이라는 가중치와 연산을 하고 이것들이 모여서 cellbody 내에서 단순한 합연산이 이루어지게 되고 activation function을 이요해서 axon을 통해 다음 뉴런으로 전달합니다.이 activation function 중에 전통적으로는 sigmoid function이 많이 쓰였습니다. x가 아무리 작아져도 y값은 0이상이 되고 x가 아무리 커지더라고 y..

[cs231n] 2강 Classification Pipeline

k-Nearest Neightbor조금 더 부드러운 Classification을 수행한 것으로 인접한 K개를 묶어서 판별하는 것입니다.  하이퍼파라미터를 설정하기 위해서 여러번의 실험을 해야하기 때문에 여러번의 data를 마련해야 합니다. 일부분으로 하이퍼파라미터를 튜닝하기 위한 validation을 만들어냅니다. 트레이닝 데이터 수가 적은 경우에는 Cross Validation을 활용해도 됩니다. 하지만 최근접아웃 방식은 위의 4개의 사진을 동일하게 인식합니다. 이는 최근접아웃 방식으로 하다 보니 발생하는 문제이며 이렇기에 현재에는 잘 쓰이지 않는 알고리즘입니다. Linear Classifier파라미터를 들어가는 방식입니다. 이전의 최근접아웃은 파라미터 기반이 아니었습니다.  f(x,W) x는 이미지에..

[C++] 백준 10799번 쇠막대기

정답코드#include #include #include using namespace std;int main(){ string input; stack s; getline(cin, input); int cnt = 0; for(int i=0; i그려보지 않고서는 이해가지 않을 수 있습니다. () 이렇게 괄호 안에 아무것도 없이 만날 때는 쇠막대기를 쪼개는 것이고 그렇지 않을 경우 괄호 안에 (나 )가 포함되어 있는 경우에는 쇠막대기가 되는 구조입니다. 이 문제는 쇠막대기와 관련된 괄호 표현을 해석하는 문제입니다. 문제의 핵심은 주어진 괄호 문자열이 어떻게 쇠막대기의 개수와 관련되는지를 이해하는 것입니다. 문제 풀이 개념쇠막대기와 레이저의 표현:(는 쇠막대기의 시작입니다.)는 쇠막대기의 끝을 나타내기도 하지만,..

[C++] 백준 4949번 균형잡힌 세상

정답코드#include #include #include using namespace std;int main(){ while(1) { string input; getline(cin, input); if (input == ".") { break; //마지막 조건이 .이므로 .이 들어가면 break; } stack s1; bool flag = 0; for (int i = 0; i 일단 .이 들어가면 탈출해야 하므로 IF문을 통해 BREAK;가 되도록 만들어줍니다. 이후 while문을 통해 getline으로 읽은 문장의 char 하나하나를 분석하면 됩니다. 먼저 ( 나 [가 나올 때는 push를 해주는 것으로 하고 그 다음 조건에서는 top이 ( 이거나 [ 일 때 만약 empty가 비어있지 않..

[c++] 1874번 스택 수열

정답코드#include #include #include using namespace std;int main(){ int cnt = 1; int n; cin >> n; stack s; vector result; for (int i = 0; i > x; while(cnt 스택을 이용하여 해결하면 됩니다. 여기서 마지막 vector를 출력해낼 때 endl을 사용할 경우 버퍼를 계속해서 플러시하면서 시간 초과가 발생할 수 있으니 \n으로 바꾸어주면 됩니다. 알고리즘은 s.top이 x가 아니라면 계속해서 + 를 해주면 되기에 result에 +를 pushback 해주고 만약 top 즉 맨 최근에 들어온 스택에서의 상단의 값이 x라면 - 즉 pop을 해줘야 하기 대문에 pop을 해준 다음 result에 -를 pus..

[C++] 백준 10773 제로

정답코드#include #include using namespace std;int main(){ stack s; int n; int num; int sum = 0; cin >> n; for(int i=0; i> num; if (num != 0) s.push(num); else { s.pop(); } } while(!s.empty()) { sum += s.top(); s.pop(); } cout push하는 과정은 for문으로 n을 입력 받은 후 실행하도록 하면 됩니다. 물론 문제에는 K이기에 K를 변수로 지정하면 됩니다. push하고 0이면 pop하고, 이런 식으로 하다가 sum을 구해줘야 하는데 stack은 배열과 다르게 sum을 계산해야 합니다. 각각 하나의 구조체 느낌으로 판단해야..

[C++] 백준 10828 스택

정답코드#include #include using namespace std;int main(){ stack s; int N; string command; int num; int result = 0; cin >> N; for(int i=0; i> command; if(command == "push") { cin >> num; s.push(num); } else if(command == "pop") { if (s.size() == 0) { result = -1; cout c++은 스택을 지원하기 때문에 라이브러리에 스택을 넣어주고 해주시면 됩니다. coimmand로 각각 입력받을 것을 if문을 걸어준 뒤 각 동작에 해당하는 것을 만들어주면 됩니다. push의 경우 그냥 pu..

[C++] 백준 5086번 배수와 약수

풀이#include using namespace std;int main(){ while(1) { int x, y; cin >> x >> y; if (x == 0 && y == 0) break; if (y % x == 0) cout %를 이용해서 풀면 됩니다. IF와 else if를 사용해서 하면 되고 x == 0 이고 y ==0 일때 나가야 하니 break;문을 걸어줘서 하면 간단하게 풀 수 있습니다. 그리고 얼마나 받을지 개수가 정해지지 않았기 떄문에 while문으로 받습니다.  읽으면서 쭉 풀면 되는 문제입니다.