하둡 스파크 공부의 필요성

이미지
RNN 공부를 간단히 한 상태에서 kaggle 데이터셋으로 RNN을 구현하는 중이었다. 글자를 행렬로 바꾸는 과정에서 50만개의 글자를 행렬로 만드려니 메모리 오류가 나는 것은 내 노트북에서 당연한 일이었다. 그래서 생각해보니 내가 하둡 스파크를 공부한 이유가 대용량 데이터의 전처리를 보다 빠르게 하기 위함이었다. 집에 있는 그나마 나은 데스크탑으로 스파크를 통해 데이터를 가공하고 가공된 데이터를 가져와 모델링을 하는 것이 효율적일 것 같다. 파이썬 텐서플로우로는 딥러닝 연산을 하고 하둡 스파크에서 데이터의 가공을 하는 메카니즘을 공부해야겠다. 지금은 하둡2 얀 설치에서 막혀있지만 하루 빨리 설치 오류부터 고쳐나가야겠다.

딥러닝에 쓰이는 어려운 라이브러리 정리

Python 라이브러리 정리 이 게시글의 계기는 TensorFlow에 대한 github의 코드를 이해하지 못해서 입니다. 전체 코드를 보고 싶으시다면 char-rnn-tensorflow 에 있습니다. 물론 아래 코드는 해당 라이브러리 함수의 빙산의 일각에 불과합니다. 굉장히 주관적인 어려움에 의한 게시글입니다. 다행히 여기 쓰일 함수를 구글링해서 들어오신 분들이 많을거라 예상되기 때문에 저가 이미 알고 있는 함수들에 대한 언급은 하지 않겠습니다. 딥러닝에서 아래 라이브러리들이 다 꼭 쓰여야만 하는 것도 아닙니다. 단순히 나중을 위해 공부하는 것입니다. import tensorflow as tf import argparse import time import os from six.moves import cPickle from utils import TextLoader from model import Model def main(): parser = argparse.ArgumentParser() parser.add_argument('--data_dir', type=str, default='data/tinyshakespeare', help='data directory containing input.txt') '''(중략)''' parser.add_argument('--init_from', type=str, default=None, help="""continue training from saved model at this path. Path must contain files saved by previous training process: 'conf...

Recurrent Neural Network - 2

이미지
첫번째 RNN 공부는 TensorFlow 공식 홈페이지 RNN 튜토리얼에서 소개된 좋은 게시글을 공부했었습니다. 이번에는 TensorFlow 공식 홈페이지 튜토리얼 을 공부할 것입니다. Recurrent Neural Networks Introduction RNN과 LSTM을 소개하기 위해 colah's blog 게시글 을 보기 바랍니다. 이 글을 번역하여 공부한 것이 저의 첫번째 게시글이었습니다. Language Modeling 이 튜토리얼에서 언어 모델링 문제에서 RNN을 어떻게 학습시키는 지 알아 볼 것입니다. 우리의 목표는 문장에 확률을 할당하는 확률 모델을 fit시키는 것입니다. 주어진 이전 단어들의 히스토리를 이용하여 다음 단어를 예측할 것입니다. 이런 모델의 질을 측정하기 좋은 Penn Tree Bank (PTB) 데이터셋을 이용할 것입니다. 언어 모델링은 음성 인식, 기계 번역, 이미지 캡셔닝과 같은 많은 재미있는 문제에 핵심이기도 합니다. 이 곳 을 보시면 RNN이 여러 재밌는 분야에 쓰이고 있다는 것을 알 수 있습니다. Tutorial Files 아래 파일들은 TensorFlow Github 의 tensorflow/models/rnn/ptb 에 있습니다. File Purpose ptb_word_lm.py PTB 데이터 셋을 train하는 코드 reader.py 데이터셋를 읽는 코드 Download and Prepare the Data 이 튜토리얼에 필요한 데이터셋은  Tomas Mikolov's webpage :   http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz   에 있습니다.  이 데이터셋은 전처리되어 있고 10000의 다른 단어로 이루어져 있습니다. reader.py를 이용해 위 단어들을 unique integer identifier로 만듭니다. The Model ...

Recurrent Neural Network - 1

이미지
이 글은  Understanding LSTM Networks  라는 블로그 포스트를 번역하고 공부한 내용입니다. Recurrent Neural Network 사람은 처음부터 매 순간 생각하지 않습니다. 이 에세이를 읽을 때, 이전의 단어에 대한 이해를 바탕으로 각각의 단어들을 이해합니다. 사람들은 생각을 처음부터 시작하지 않고 이전의 것들을 모두 버리고 생각하지 않습니다. 즉, 사람들의 생각은 지속성을 지닙니다. 기존의 뉴럴 네트워크는 할 수 없었고, 그것이 가장 큰 단점인 것 같았습니다. 예를 들어, 영화에서 발생하는 모든 상황들을 순간마다 분류한다고 상상해봅시다. 기존의 뉴럴 네트워크는 어떻게 자신의 추론을 이용해 이전의 사건들로 다음 사건들을 알릴 지 불명확합니다. 순환 신경망을 이 문제를 풀어냅니다. 순환 신경망은 자신에게로 돌아오는 반복 네트워크를 갖고 있으며 그것이 정보를 계속 유지시켜줍니다. 위 그림에서 뉴럴 네트워크의 덩어리 A, input으로 보이는 Xt 와 output 값인 ht를 볼 수 있습니다. 반복은 정보가 다음 네트워크를 넘어가도록 합니다. 반복들은 RNN을 미스테리하게 만듭니다. 그러나 , 좀 더 생각해본다면, 평범한 신경망과 크게 다를 게 없다고 판명납니다. RNN은 후손 노드에게 메시지를 넘기는 네트워크들의 여러 복사본들이라고 생각되어질 수 있습니다. 반복을 펼쳐보면 어떤 일이 생길 지 생각해봅시다. 연결되어 있는 노드들은 RNN이 sequence(순서) 와 lists(배열)에 직접적으로 관련되어 있다는 것을 드러냅니다. RNN은 저런 데이터를 위한 자연적인 구조입니다. 즉, RNN 구조는 이전의 데이터를 바탕으로 학습해야하는 데이터를 위한 인간 뇌 신경망의 자연적인 메카니즘이라는 말입니다. 몇 년전부터 RNN은 음성인식, 언어 모델링, 번역, 이미지 캡셔닝 등 많은 문제에 적용되어 엄청난 성과를 냈습니다.  The Unreasonable Effectiveness of...

버추얼 머신 공유 폴더 권한 에러

상황 (2016/08/22) 공유 양방향으로 해놨으나 가끔 안되는 경우가 있어 공유 폴더를 만들고자 했다. vm에 폴더를 공유하기 위해 설정에 들어가 만들었으나 권한 에러 발생. 자동 마운트와 항상 사용 버튼을 누른 상태. 에러 접근 권한 오류 해결 sudo usermod -G vboxsf -a 추가할사용자명 sudo shutdown -r now

TensorBoard : Convolutional Neural Network

이미지
TensorBoard : Convolutional Neural Network 이번에는 cnn을 텐서보드에 나타내는 것을 공부해보겠다. cnn에서도 MNIST 예제를 사용하겠다. 하지만 cnn은 컴퓨터에서 너무 느리게 학습되므로 나중에 AWS로 다시 해볼 예정이다. ```python import tensorflow as tf import numpy as np import input_data batch_size = 128 test_size = 256 def init_weights(shape,name):     return tf.Variable(tf.random_normal(shape, stddev=0.01),name=name) def model(X, w, w2, w3, w4, w_o, p_keep_conv, p_keep_hidden):     with tf.name_scope("layer1") as scope:         l1a = tf.nn.relu(tf.nn.conv2d(X, w,                       # l1a shape=(?, 28, 28, 32)                             strides=[1, 1, 1, 1], padding='SAME'))         l1 = tf.nn.max_pool(l1a, ksize=[1, 2, 2, 1],              # l1 shape=(?, 14, 14, 32)       ...

TensorBoard : Neural Network

이미지
TensorBoard : Neural Network 텐서플로우에서 코드를 좀 더 직관적으로 보기 위해 tensorboard 를 공부했다. 이제 NN,CNN,RNN 예제를 텐서보드에서 구동시키기 위해 코드를 재작성해봤다. NN과 CNN은 MNIST 예제를 이용했고 RNN은 아직 미정이다. ```python import tensorflow as tf import numpy as np import input_data def init_weights(shape, name):     return tf.Variable(tf.random_normal(shape, stddev=0.01), name=name) # This network is the same as the previous one except with an extra hidden layer + dropout def model(X, w_h, w_h2, w_o, p_keep_input, p_keep_hidden):     # Add layer name scopes for better graph visualization     with tf.name_scope("layer1") as scope:         X = tf.nn.dropout(X, p_keep_input)         h = tf.nn.relu(tf.matmul(X, w_h))     with tf.name_scope("layer2") as scope:         h = tf.nn.dropout(h, p_keep_hidden)         h2 = tf.nn.relu(tf.matmul(h, w_h2))     with tf.name_scope("layer3") as scope: ...