목록분류 전체보기 (27)
study
문제) 풀이) 풀이과정에서 리스트를 역순으로 변환하지 않고 계산하는 이유는 45(십진법)는 1200(3진법)이며 역순으로 변환하면 0021이 된다 하지만 리스트에서 계산할 때 1부터 시작하기 때문에 역순으로 계산되는 결과와 동일하다 본 문제에서 배울 부분은 두 가지라고 생각됩니다 1. n_list.insert(0, n%3)을 통해 3진법으로 변환한 부분 2. for i in n_list 구문을 통해 3진법을 10진법으로 계산한 부분 125(십진법)를 11122(삼진법)로 변환 후 10진법으로 계산하는 과정을 구체적으로 표시한 부분입니다 n_list 1 1 1 2 2 answer 1 4 13 67 229 stnd 3 9 27 81 243
이제부터 우리는 Recurrent Neural Networks(RNN) 에 대해 알아보자. 우리는 지금까지 One to One 모델의 Vanilla Neural Network 를 배웠다. 이는 하나의 고정된 크기의 입력(fixed size object input)을 넣으면 hidden layer 를 거쳐서 결과로 나오는 형식이었다. 에를 들면 classification 문제 등에서 활용할 수 있는 경우들이었다. 그러나 머신 러닝의 분야에서는 이러한 입력과 출력에 조금 더 유연함을 주는 것에 대해 생각해 볼 필요가 있다. 위 이미지에서 가장 왼쪽에 나타난 것이 바로 우리가 지금까지 알아본 One to One 모델이 되겠다. 그렇다면 이제 다양한 종류의 입력과 출력에 대해 봐보자. 고정된 크기의 입력(e.g..
안녕하세요 이번 포스팅은 간단하지만 정렬 방식의 차이에 대해서 알아보고 실전문제를 풀어보도록 하겠습니다 Sort Sort의 경우 원본 리스트를 정렬하되 반환 값은 None이며 원본 리스트의 순서가 변경됩니다 Sorted Sorted의 경우 정렬된 새로운 리스트를 반환하며 원본 리스트에는 영향이 없습니다 모든 iterable(list, tuple, dic)에 동작합니다 Sorted를 사용해서 문제를 풀어보겠습니다 해당 문제는 프로그래머스에서 출제된 python 문제입니다 문제풀이 1) sort()를 활용해서 원본 리스트를 정렬한 후 해당 값을 출력하는 방식입니다 문제풀이 2) command(3가지로 구성된 값)의 값을 i, j, k 각각의 변수에 할당을 합니다 sorted()를 통해 append에 값을 추..
안녕하세요 이번 포스팅은 함수 선언을 간결하게 할 수 있는 lambda에 대해 소개하겠습니다 lambda 설명아 앞서 메모리 영역에 대해서 설명하겠습니다 프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해준다. 할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역으로 나뉜다. 이러한 메모리 공간이 어떠한 용도로 언제, 어디서 할당되는지 알아보도록 하자. 메모리 공간은 코드영역, 데이터 영역, 힙 영역, 스택 영역으로 4가지로 구분할 수 있습니다 코드 영역의 경우는 우리가 작성한 소스코드 영역으로 텍스트 영역이라고도 부릅니다 그래서 설명은 생략하겠습니다 데이터(Data) 영역 - 전역 변수와 static 변수가 할당되는 영역 - 프로그램의 ..
안녕하세요 python에서 고급 함수라고 불리는 closure에 대해서 알아보겠습니다 우선 closure 설명에 앞서 변수 사용 방법에 대해 설명하겠습니다 X는 전역 변수로 어느 지역에서나 사용할 수 있는 것을 말합니다 반대로 X는 지역 변수로 함수 안에서만 사용할 수 있습니다 그림에서 보시면 foo()는 지역 변수를 출력한 값이기 때문에 10이 나오지만 함수 밖에서 출력한 x는 전역 변수인 20으로 출력된 것을 알 수 있습니다 사진을 보시면 함수에서 정의한 X에 대해서는 출력이 가능하지만 함수 밖에서는 X가 출력이 되지 않는 것을 확인할 수 있다 그렇다면 함수 안에 있는 지역 변수를 전역 변수로 어떻게 바꿀 수 있을까요? 보시다시피 global을 적어주면 지역 변수가 전역 변수로 변경됩니다 X의 값을 ..
CNN(Convolution Neural Network)은 근래에 시각 인식 인공지능에 자주 사용되는 네트워크 구조입니다. CNN이 자주 사용되는 이유는 무엇보다도 다른 것들보다 좋은 성능을 보이기 때문입니다. 이 글은 CS231n 유튜브 강의 9강에서 다룬 Imagenet classification 대회에서 좋은 성적을 거둔 CNN Architecture에 대해 소개할 것입니다. 각 년도에 해당하는 Imagenet Classifcication 승자의 error rate는 위와 같습니다. 여기서 저희는 AlexNet, GoogLeNet, ResNet, VGG Net에 대해 알아보겠습니다. (2013년에 1위를 차지한 ZFNet은 12년 우승자인 AlexNet의 Hyper Parameter를 조금 수정한 ..
Neural Network의 Weight를 조정하는 과정에서 보통 Gradient Descent(경사하강법)라는 방법을 사용합니다 이는 네트워크에서 내놓는 결과값과 실제 값 사이의 차이를 정의하는 Loss Function(손실함수)의 값을 최소화하기 위해 기울기를 이용하는 것입니다 여기서 Loss Function을 계산할 때 전체 Train-Set을 사용하는 것을 Batch Gradient Descent라고 합니다 그러나 이렇게 계산하면 한번 step을 내딛을 때, 전체 데이터에 대해 Loss Function을 계산해야 하므로 너무 많은 계산량이 필요합니다 이를 방지하기 위해 보통은 Stochastic Gradient Descent(SGD)라는 방법을 사용한다 이 방법에서는 Loss Function을 계..
sigmoid함수는 0과 1 사이로 변환해주어 많이 사용된 활성화 함수입니다 하지만 역전파 과정에서 기울기가 없어지는(기울기 : 0) 문제가 발생합니다 이를 vanishing gradient라고 부릅니다 구체적으로 sigmoid 함수를 사용하였을 때 vanishing gradient 문제가 발생하는지 알아보겠습니다 X의 값이 10인 경우 시그모이드 함수에 넣어주면 1 / (1+e-10) = 0.999의 값이 나오고 이를 역전파 시키기 위해 시그모이드 함수 미분값인 (1-∂(x))∂(x) 수식에 0.999를 넣어주면 됩니다 (1-0.999)(0.999) = 0.0000999가 나오는 것을 확인할 수 있습니다 X의 값이 -10인 경우 시그모이드 함수에 넣어주면 1 / (1+e10) = 0.0000453값이 ..
안녕하세요 5강 이전에 강의 내용들은 Neural Network와 관련되어 있었습니다 CNN은 Neural Network에서 Convolution Layer가 추가된 딥러닝 알고리즘입니다 이미지의 경우 width, height, depth로 구성되어 있으며 filter를 통해 이미지에서 특징점을 뽑는 것을 Convolution Layer라고 부릅니다 image의 depth와 filter의 depth는 동일해야 합니다 image에서 filter 연산을 통해 생성된 것을 activation map이라고 부릅니다 하나의 filter는 하나의 activation map을 만듭니다 32 * 32 * 3(width, height, depth) 이미지에서 5 * 5 * 3의 filter(6개)를 연산하면 28 * 2..
문제 - 숫자 카드 게임 : 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다 1. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 예를 들어 3 x 3 형태로 카드들이 다음과 같이 놓여 있다고 가정하..