우리가 사용하는 데이터들 중에서는 Sequence data가 상당히 많이 있다. 예를 들어, 음성인식, 자연어를 보면 1개의 데이터가 아니라 sequence 형태로 되어있다. 1개의 단어만 이해한다고 해서 전체 맥락을 이해하는게 아니라 이전에 했던 말들, 단어들을 이해해야지만 이해할 수 있다. 기존에 있던 NN/CNN은 x라는 입력이 있다면 y라는 출력이 나오는 간단한 형태였기 때문에 x0, x1, x2... 이런 시리즈 데이터들을 처리하기가 불편했다. 그래서 많은 사람들이 고민한 끝에 만들어 낸 것이 다음과 같은 형태의 네트워크이다. 시리즈 데이터를 이야기 할 땐, 이전의 어떤 데이터가 그 다음에 영향을 줄 수 있어야 한다. 그런 것들을 해보자는 뜻에서 만든 것이 어떤 현재의 state가 다음 stat..
지난번에 Deep CNN을 이용하여 99.3%의 정확도가 나왔다. 그런데 소스코드가 너무 복잡하고 관리하기가 힘들기 때문에 파이썬의 class를 이용하면 효과적으로 관리할 수 있다. In [2]: import tensorflow as tf import numpy as np # import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data tf.set_random_seed(777) # reproducibility mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # Check out https://www.tensorflow.org/get_star..
Simple CNN을 이용하여 MNIST를 분류해보겠다. MNIST and Convolutional Neural Network¶ In [1]: import tensorflow as tf import random # Import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data tf.set_random_seed(777) # reproducibility In [2]: mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # Check out https://www.tensorflow.org/get_started/mnist/beginners for # m..
ConvNet은 이미지와 텍스트 분류 외에도 여러가지 분야에서 좋은 성능을 발휘한다. 이것의 과정을 크게 3가지로 나눠볼 수 있다. 1. convolution이라는 과정을 통해 filtering 하여 여러가지 convolution layer로 값을 뽑아내는 방법 2. 대이터량이 너무 많아지니 작게 subsampling을 한다. 3. 나눠진 값들(특징들이 추출된 값들)을 최종적으로 일반적인 (forward NN, FC)를 통해서 분류나 회귀를 한다. CNN이 특히 이미지에 대해서 잘 동작을 하는데, 한국 아산대학교 컨테스트에서 CNN을 이용해 CT images 결과를 내어 수상하기도 했었다. 전에 블로그에 올렸었던 풀링 과정이다. convolution하는 과정과 sampling하는 과정이 Tensorflo..
설명했던 가장 기본적인 형태의 ConvNet ImageNet 경연대회에서 1등을 했던 ConvNet ... 이 과정에서는 nomalize 하고 있지만 요즘에는 잘 사용하지 않는다. 디테일 한 사항은 다음과 같다. 2014년도 우승자 2015년도 우승자 그림을 구별하는 사람의 판단력을 능가. 많은 대회를 휩쓸었다. 알아둘 것. ResNet같은 경우에는 layer가 엄청나게 늘어났다. 이렇게 증가하면 학습하기가 매우 어려울 것 같다. 뛰어넘는듯한 개념때문에 뛰어넘는 부분의 layer를 한 묶음으로 볼수도 있기 때문이지 않을까 하고 유추도 해본다. 2014년도 우승 알고리즘과와 2015년도 우승 알고리즘의 아이디어가 유사하다는 것을 알 수 있다. 이미지 뿐만 아니라 ConvNet으로는 여러가지를 할 수 있다...
다음 그림을 보자. (여기서 CONV, RELU, POOL의 횟수나 순서는 직접 정하는 것이다.) Pooling layer Pooling layer는 sampling을 하는 기능을 담당한다고 보면 된다. 앞에 이미지가 있고 필터링 하여 conv layer을 만들었는데 깊이는 필터의 개수에 따라 달라진다고 하였다. 그때 하나의 conv layer에서 하나의 layer만 뽑아내보자. 이것을 뽑아서 size를 작게 하는것을 pooling이라고 한다. 그렇게 하나의 layer씩 pooling 한 다음 쌓는다. Pooling은 어떻게 하는지 예를 들어보자. 다음 4x4 matrix에서 stride의 크기를 2로 2x2 필터링을 한 다음 가장 큰 값을 output으로 정해준다. 하나의 값들만 뽑았기 때문에 samp..
우리는 이제 기본적인 network를 구성할 수 있다. 지금까지 했던 network는 forward또는 fully connected network라고 한다. 이런 형태 말고도 입력을 여러개로 나누고 이것을 하나로 합쳐 결과를 내는 방식이 있는데 convnet의 기본적인 아이디어이다. Convolutional Neural Networks convnet의 기본적인 아이디어는 고양이 실험에서 시작되었다. 고양이에게 어떤 형태의 그림을 보여줬더니, 그림을 읽어들이는 뉴런들이 동시에 동작하는게 아니라 그림의 부분마다 다른 뉴런들이 활성화 된다는 것을 알게 되었다. 하나의 이미지가 있으면 그 이미지를 잘라내어 각각의 입력으로 넘기게 되는데 이 층을 convolutional layer라고 한다. 그래서 이 netwo..
딥러닝으로 MNIST 98%이상 해보기¶ 이번 시간은 neural net을 사용할 때 유용한 팁에 대해서 알아보겠다.¶ MNIST Softmax!¶ In [1]: # Lab 7 Learning rate and Evaluation import tensorflow as tf import random # import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data tf.set_random_seed(777) # reproducibility mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # Check out https://www.tensorflow..