본문 바로가기

딥 러닝7

07. CNN 실습01 ( 기본적으로 레이어 나누는 법) import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # 이미지를 하나 불러온뒤, reshape 를 해준다 img = mnist.train.images[0].reshape(28,28) plt.imshow(img, cmap='gray') plt.show() # 이미지 확인 Extracting MNIST_data/train-images-idx3-ubyte.gz Extracting MNIST_data/train-la.. 2017. 12. 28.
06.CNN ( Convolutional NN ) CNN 의 초기 모델은 고양이 뇌 실험에서 시작되었다. 이미지를 나눠서 판단한 후에 판단된 결과를 다시 합쳐서 전체의 그림을 판단하는 방법이다. 만약 차그림이 있다고 가정하자 위와같이 CONV , RELU ,POOL 로 나눠서 그림들을 판단( 트레이닝 ) 시킨다. 그럼 나중에 값들을 종합해서 자동차 라는 결과를 뽑아내는 방식이다. 그럼 어떤 방법으로 그림을 나누는가? 필터를 이용한다. 예전에 대학교때 영상처리 공부를 하면서 마스크에 대해서 공부한적이 있다. 그와 비슷하게 어느 특정한 필터를 주어서 하나의 값을 뽑아내는 방법이다. 여기서 중요한건 필터를 구성하는 방법,몇개의 값들이 나와야 하는가인대 1. 필터는 우리가 사용했던 방법으로 Wx+b 의 방식을 사용한다 -> 하나의 값을 나타낼수 있음 2. 몇개.. 2017. 12. 27.
05. ReLU 와 초기값 설정 ( 딥러닝 잘하는 법) 딥러닝의 문제중 하나가, 학습의 단계가 많아 질수록 학습하는 내용이 더 나빠 질 수 있다는 점이 있었다 그이유를 자세히 알아보고, 해결법을 공부해보자, 딥러닝의 경우 이런식으로 입력값을 받고 각층을 올라가는 구조이다, 그러다 보면 결과값이 나오고 하지만 이과정에서 문제가 하나 발생하게 되는대 원래의 개념은 뒤로 돌아가면서 ( 미분값을 곱하기 때문에 가능 ) 쉽게 W 값을 고쳐나갈수 있다는 것이었다, 하지만 뒤로 갈수록 값이 애매 모호해지는 경향이 있었다 이유는 sigmoid 를 사용 했기 때문이다! 가장 강력할것만 같았던 sigmoid 때문에 학습이 제대로 이루어 지지 않았던 것 sigmoid는 0~1 의 값으로만 나오기 때문에 결국 항상 1보다 작은수를 곱해 나간다, 그러다보면 값이 0에 가까워지고 결.. 2017. 12. 15.
04. XOR tensorflow 실습, 딥러닝 import tensorflow as tf import numpy as np # Xor 데이터 생성 x_data = [[0,0],[0,1],[1,0],[1,1]] y_data = [[0],[1],[1],[0]] x_data = np.array(x_data,dtype=np.float32) y_data = np.array(y_data,dtype=np.float32) # X , Y 행렬 처리, 데이터 값 여러개, w 값 여러개 임으로 X = tf.placeholder(tf.float32,[None,2]) Y = tf.placeholder(tf.float32,[None,1]) # 모델 설계 xor 을 처리하기 위한 W,b 텐서 생성(여러개) # 첫번째 모델 생성 2개 입력 2개 출력 W1 = tf.Variabl.. 2017. 12. 12.
03. XOR의 문제, 해결방법 우리가 직면했던 문제는 과연 xor 을 어떻게 처리해 줄것인가 였다, 위의 그림과 같이 xor 은 리니어하게 선을 나눌 수 없다. 그래서 많은 사람들이 80년대 까지 포기 했다,(1 강의 참조 ) 그러다가 나온 기술이 뉴럴 네트웤 이라는 알고리즘인대 쉽게 이야기하면 여러단계를 걸쳐서 처리하면 xor 역시 처리가 가능하다는 것이다 ( 즉 한번에 처리하는 것이아닌 여러번의 처리를 합치는 것 ) 위와 같이 여러개의 W , b 의 값을 가지고 입력하고, 출력했을때 처리가 가능 한 것을 알 수 있다. 0,1 을 대입 했을때 과정 이런식으로 W 의값과, b의 값을 미리 정해주는 방법이 Forward propagation 이라고 한다. 여기서의 문제는 과연 W, 값과 b 의 값은 어떻게 학습해서 변화 시키냐 이다. .. 2017. 12. 12.
02. Tensorflow 함수 다시 복습!! 이번에는 텐서플로우에서 사용하던 함수의 활용성을 높이기 위해서 함수를 분석 공부를 하도록 하겠다~ 일단 가장 생소했던 개념이다 Rank , 쉽게 이야기하면 ' [ '의 갯수이다. 위의 예제를보면 마지막 예제의 Rank 는 4개 이다. Shape 는 [, , ,] 이런식의 구조를 가지고 있는대 이떄 Rank 는 ' , ' 의 갯수를 정한다고 보면된다. 결론적으로 shape 는 array의 모양 이라고 생각하면 쉽다. 마지막으로 axis 는 축으로써 차원의 갯수가 늘어 나면 축의 갯수도 늘어난다 가장 안쪽의 배열이 축의 가장 큰수가 되고 가장 밖깥쪽의 축은 -1 or 1 로 표현이 된다 두번쨰는 행렬과, 배열의 차이이다. 가장 큰차이는 연산에서 일어난다.. 뭐.. 실수만 안하면 ... ㅎㅎ 다음은 브로드 캐.. 2017. 12. 10.
01. 딥러닝의 개념( 딥의 역사, 활용도 ) 딥 러닝은 머신러닝과 비슷하 개념이다 사실 딥러닝의 큰의미가 머신러닝이고 머신러닝의 큰의미가 인공지능이다. 인공지능 > 머신러닝 > 딥러닝 그중에서도 우리느 딥러닝을 공부 해보자. !! 역시 김성훈 교수님의 강의를 듣고 정리 할것이다. 딥러닝이 나온 기본적인 이념은 우리대신 어려운 일들을 생각해내고 해결해주는 머신을 만들자! 이다. 위의 사진을 보면 뇌의 구조와 뇌가 어떤식으로 작동되는지 알 수 있다. 뇌는 복잡하게 뉴런들로 연결되어 있다. 하지만 뉴런들은 생각보다 간단하게 작동하는대. input 의 신호를 받아서 받은 신호들을 합쳐서, 그 합친 값들이 어느 이상이 되면 활성화, 아님 비활성화 로 작동한다. 그래서 충분히 알고리즘으로 나타낼 수 있다고 믿었다. 뉴런의 과정을, 알고리즘으로 나타낸 것이다... 2017. 12. 9.