Amazone Web Services - deep neural network를 학습하고 평가하는것은 막대한 계산을 필요로 한다. - 적절한 규모의 데이터셋의 경우 로컬상의 CPU에서 네트워크를 학습시킬 수 있지만 - epoch의 수, 신경망의 크기 및 기타 요소들에 따라 수십분에서 수시간이 걸릴수도 있다. - 따라서 적절한 대안으로 병렬처리를 지원하는 GPU(Graphics Processing Unit)를 통한 환경에서 학습하는것이다. - 내장 NVIDIA GPU가 있는 컴퓨터가 없다면 대안으로 Amazon EC2를 사용하는것을 추천한다. - 현재 동일한 기능을 하는 클라우드 서비스 공급업체들이 많이 있지만, EC2는 배우는 입장에서 사용하기 가장 무난하다. - 아마존 서버를 이용하여 밑바닥에서 부터 신..
TensorFlow Dropout - Dropout은 over-fitting을 줄이기 위한 regularization 기술이다. - 네트워크에서 일시적으로 유닛(인공 뉴런, artificial neurons)을 배제하고, 그 배제된 유닛의 연결을 모두 끊는다. - 위의 그림은 dropout의 작동 원리를 설명하고 있다. - 텐서플로우에선 드롭아웃을 구현할 때 tf.nn.dropout() 함수를 사용한다. - tf.nn.dropout()을 사용한 예를 확인해보자. 1234567keep_prob = tf.placeholder(tf.float32) # probability to keep units hidden_layer = tf.add(tf.matmul(features, weights[0]), biases[0..
Loading the Weights and Biases into a New Model - 이미 학습하여 저장한 모델에 대해 미세한 조정(finetuning)이 가능하다. - 하지만 저장된 변수를 직접적으로 수정된 모델에 대입하는것은 에러를 유발할 수 있다. - 이런 문제점을 피하며 finetuning 하는법에대해 알아보자. Naming Error - 텐서플로우는 텐서와 연산(Tensors and Operations)에 있어 스트링 식별자로 name이라는 키워드를 사용한다. - 만약 name이 주어지지 않으면 자동적으로 이를 생성한다. - 텐서플로우는 첫번째 노드 이름을 으로 지정하고 - 바로 뒤따르는 두번째 노드로 이름을 _로 지정한다. - 이렇게 name을 할당하는것이 각기 다른순서의 가중치와 바이어스..
Save and Restore TensorFlow Models - 모델을 학습하는데는 몇시간이 걸릴 수 있다. 그 도중에 텐서플로우 세션을 닫아버리면 - 학습 된 모든 weights와 bias들을 잃게된다. - 이렇게 잃어버리면 모델을 다시 학습시켜야한다. - 다행히 이런 문제를 방지하기위해 텐서플로우는 tf.train.Saver라는 클래스를 제공한다. - 이 클래스를 사용하면 진행상황을 저장할 수 있다. - 다시말해 모든 tf.Variable을 file system에 저장하는 기능을 한다. Saving Variables - 먼저 weights와 bias 텐서를 저장하는 예시부터 진행해보자. - 먼저 두 변수를 저장해보고, 나중엔 실제 모델에서 모든 가중치들을 저장해보도록 하자.12345678910111..
Deep Neural Network in TensorFlow - 텐서플로우를 사용하여 logistic classifier를 구현해봤었는데, 이번엔 Deep neural network를 구현해보도록 하자. - MNIST 데이터베이스의 문자들을 분류하기위해 작성된 텐서플로우 코드를 가지고 구현을 진행한다. - 여기에서 텐서플로우의 다른 예제들을 확인 TensorFlow MNIST12from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets(".", one_hot=True, reshape=False)cs - 텐서플로우에서 제공하는 MNIST 데이터셋을 사용하여 진행한다. - 이 데이터셋은 batch들과 O..
Multilayer Neural Networks - 텐서플로우를 이용하여 다층 레이어를 이용한 네트워크를 설계해보자. - hidden layer를 추가하게 될 경우 더 복잡한 모델을 만들 수 있다. - 또한 hidden layer단에서 비선형(non-linear) activation 함수를 사용하게될 경우 - 비선형 함수를 모델링 할 수 있다. - 텐서플로우를 사용한 hidden-layer의 구현 중 가장 먼저 알아야 할 내용은 - ReLU hidden layer이다. - ReLU는 비선형 함수이고 정제된 선형 유닛(rectified linear unit)이다. - ReLU함수는 음수에 대해선 0을, 0 이상인 x에 대해서는 x 자신을 리턴한다. TensorFlow ReLUs - 텐서플로우는 ReLU함수..
TensorFlow Neural Network Lab TensorFlow Lab - 텐서플로우를 이용해 single layer neural network를 만들어보자. - 데이터들을 Normalization하고, 네트워크를 학습하는 과정을 거침. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import hashlibimport osimport picklefrom urllib.request import urlretrieve import numpy as npfrom PIL i..
Epochs - Epoch는 전체 데이터셋에 대한 forward pass와 backward pass를 나타낸다. - 그렇기 때문에 더 많은 데이터를 필요로하지 않고 Epoch의 count를 조절하므로써 - 모델의 정확도를 높힐 수 있다. - 텐서플로우에서의 epoch에 대해서 그리고 적절한 수의 epoch에 대해 알아보자. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107fro..
Mini-batch - Mini-batch는 한번에 모든 데이터를 처리하는 대신 - 하위집합으로 데이터셋을 분류하여 학습시키는 기술이다. - 컴퓨터에 전체 데이터셋을 저장할 여유가 없을 때에도 모델을 학습시킬 수 있게 해준다. - Mini-batching은 모든 샘플에서 동시에 손실(loss)을 계산할 수 없기 때문에 - 컴퓨터의 계산처리상 비효율적이라 할 수 있다. - 하지만 이는 모델을 전혀 실행할 수 없는 상황에 비해서는 작은부분이라 볼 수 있다. - 또한 Mini-batch 기술은 SGD와 결합하였을때 매우 유용하다. - 이 기술의 기본 개념은 매 epoch마다 데이터를 랜덤하게 섞은다음 mini-batch들을 생성하는것이다. - 그리고 각 mini-batch 에 대해 gradient descen..
Cross Entropy in TensorFlow - softmax 함수와 마찬가지로 텐서플로우에선 크로스 엔트로피 계산이 함수화 되어있다. - 텐서플로우에서 크로스 엔트로피 함수를 생성하려면 - tf.reduce_sum(), tf.log() 이 두가지 함수를 사용해야한다. Reduce Sum - tf.reduce_sum() 함수는 숫자들의 배열을 받아 그 합을 리턴해준다. Natural Log - tf.log() 함수는 특정 숫자의 자연로그를 취한 결과값을 리턴해줌 - softmax_data 와 one_hot_encod_label을 사용하여 cross entropy를 출력12345678910111213import tensorflow as tf softmax_data = [0.7, 0.2, 0.1]one..