전체 글

Body-parser req.body의 접근을 하면 undefined 에러를 마주치게 된다. 그 이유는 눈으로 보기에는 알아볼 수 있는 언어라고 생각하지만 사실 해석이 불가능하다고 판단되기 때문이다. 따라서 이를 인코딩 혹은 가공하는 작업이 필요한다. 이를 해주는 미들웨어가 body-parser이다. 설치법은 간다하다. 터미널에 다음 명령어를 입력하자. pip install body-parser --save Postman server에서 가공하거나 처리한 데이터를 다시 클라이언트에 보내줄 수 없기 때문에 테스트 용으로 사용하는 프로그램이다. 설치는 다음 링크에서 무료로 가능하다. https://www.postman.com/ Postman | The Collaboration Platform for API ..
· 인공지능
순차 데이터 데이터 중에는 독립적이지 않고 샘플이 서로 연관되어 있는 경우가 있다. 예를 들면 날씨 정보는 샘플이 서로 연관되어 있다. 오후 3시의 온도를 알고 있다면 1시간 후의 온도를 비슷하게 예상할 수 있다. 즉, 온도를 매시간 측정하여 데이터 세트를 만들었다면 각 시간의 온도는 이전 시간의 온도와 깊은 연관이 있을 것이다. 이렇게 일정 시간 간격으로 배치된 데이터를 시계열(time series)데이터라고 부른다. 시계열 데이터를 포함하여 샘플에 순서가 있는 데이터를 일반적으로 순차 데이터(sequential data)라고 부른다. 대표적인 순차 데이터의 예는 텍스트이다. 글을 구성하는 글자와 단어들의 순서가 맞아야 의미가 제대로 전달되기 때문이다. 이때 모델에서 순차 데이터를 처리하는 각 단계를 ..
· 인공지능
케라스 합성곱 신경망 만들기 케라스의 합성곱층은 Conv2D 클래스이다. 최대 풀링은 MaxPooling2D 클래스를 사용하고, 특성 맵을 일렬로 펼칠 때는 Flatten 클래스를 사용한다. from tensorflow.keras.layers import Conv2D, MaxPolling2D, Flatten, Dense 필요한 클래스를 임포트한다. 합성곱층 쌓기 합성곱층을 추가한다. Conv2D 클래스의 첫 번째 매개변수는 합성곱 커널의 개수이다. 두 번째 매개변수는 합성곱 커널의 크기로 높이와 너비를 튜플로 전달한다. 합성곱 커널로는 전형적으로 3 x 3 또는 5 x 5 크기를 많이 사용한다. activation 매개변수에 렐루 활성화 함수를 지정한다. 패딩은 세임 패딩을 사용하는데, tf.nn.con..
· 인공지능
합성곱 신경망 28 x 28 크기의 흑백 이미지와 3 x 3 크기의 커널 10개로 합성곱을 수행한다. 그런 다음 2 x 2 크기의 최대 풀링을 수행하여 14 x 14 x 10로 특성맵의 크기를 줄인다. 이 특성 맵을 일렬로 펼쳐서 100개의 뉴런을 가진 완전 연결층과 연결 시킬 것이다. 정방향 계산 이번에 구현할 합성곱 신경망 클래스는 ConvolutionNetwork이다. 합성곱과 렐루 함수 그리고 풀링이 적용되는 부분을 주의깊게 보면 된다. MultiClassNetwork 클래스의 forpass() 메서드에 있던 z1, a1, z2를 계산하는 식은 그대로 두고 그 앞에 합성곱과 풀링층을 추가하여 코드를 작성해 보자. class ConvolutionNetwork(MultiClassNetwork): de..
· Python/numpy
github.com/rougier/numpy-100 rougier/numpy-100 100 numpy exercises (with solutions). Contribute to rougier/numpy-100 development by creating an account on GitHub. github.com 51. ((x, y) , (r, g, b))를 원소로 갖는 배열을 만든다. 52. (100, 2) 좌표를 만들고 사이의 거리를 나타낸 것이다. scipy패키지를 이용하면 된다. 53. float을 int로 바꾸는 방법이다. view로 데이터만 공유하게 복사를 한다. 54. genfromtxt()로 txt을 읽을 수 있다. 55. 배열의 index와 요소를 함께 출력하는 방법이다. np.npdidex..
· 인공지능
렐루 함수 은닉층에 시그모이드 함수를 활성화 함수로 사용했다. 출력층은 이진 분류일 경우에는 시그모이드 함수를 사용하고, 다중 분류일 경우에는 소프트맥스 함수를 사용했다. 렐루 함수는 주로 합성곱층에 적용되는 활성화 함수로, 합성곱 신경망의 성능을 더 높여준다. 렐루 함수는 0보다 큰 값은 그대로 통과시키고 0보다 작은 값은 0으로 만든다. 렐루 함수 구현 넘파이의 maximum() 함수를 사용하면 간단하게 구현할 수 있다. import numpy as np def relu(x): return np.maximum(x, 0) x = np.array([-1, 2, -3, 4, -5]) relu(x) 텐서플로가 제공하는 렐루 함수는 relu()이다. 출력은 Tensor 객채이므로 numpy로 변환해야 한다. ..
· 인공지능
풀링 합성곱 신경망에서는 특별히 합성곱이 일어나는 층을 합성곱층, 풀링이 일어나는 층을 풀링층이라 한다. 합성곱층과 풀링층에서 만들어진 결과를 특성 맵(feature map)이라고 부른다. RGB 컬러 채널을 가진 입력 이미지가 합성곱층과 폴링층을 거치면서 변환되는 과정을 보자. 입력이 합성곱층을 통과할 때 합성곱과 활성화 함수가 적용되어 특성 맵이 만들어진다. 그런 다음 특성 맵이 풀링층을 통과하여 또 다른 특성 맵이 만들어진다. 이렇게 합성곱층 뒤에 풀링층이 뒤따르는 형태는 합성곱 신경망의 전형적인 모습이다. 특성 맵을 스캔 하며 최댓값을 고르는 모습을 나타낸 것이다. 이를 최대 풀링(max poolling)이라고 한다. 폴링 영역의 크기는 보통 2 x 2를 지정한다. 일반적으로 스트라이드는 풀링의 ..
hvv_an
이미난