실습 환경은 Python 3.6과 tensorflow 1.5이다. CNN(합성곱 신경망) 이미지 인식 분야에 주로 사용되는 신경망. 기본적으로 컨볼루션 계층과 풀링 계층으로 구성된다. 컨볼루션(합성곱) 계층 2차원 평면 행렬에서 지정된 윈도우의 값에 가중치와 편향을 적용해 하나의 값으로 압축하는 계층 한 윈도우당, 가중치는 윈도우의 크기와 같은 가중치를 곱해야 한다. 편향은 1개만 있으면 된다. ex) 28x28 입력층(이미지)에 대하여 3x3의 윈도우를 구성했을 때 필요한 최소 가중치의 개수는 3x3 9개, 편향의 개수는 9개이다. 왜 최소라고 적었냐면, 윈도우가 이동할 때 몇 칸씩 이동하냐에 따라 필요한 윈도우 개수가 달라지기 때문이다. 이 이동 범위를 우리는 스트라이드(stride)라고 부른다. 또..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 드롭아웃(Dropout) 과적합(모델의 학습 결과와 학습 데이터가 너무 일치하여 이외의 데이터(테스트 데이터)에 대한 인식률이 떨어지는 현상) 문제를 해결하기 위해 등장한 기법. 학습 시 전체 신경망 중 일부만을 사용하도록 하여 가중치의 균형을 잡게 한다. 일반 학습 방법보다 학습 시간이 더 오래 걸린다는 단점이 있다. 모델은 이전 포스팅에서 사용한 MNIST 모델을 사용하였다. 2020/07/19 - [개발 일지/ML] - MNIST 학습 모델 만들기 MNIST 학습 모델 만들기 실습 환경은 Python 3.6과 tensorflow 1.5이다. MNIST 손으로 쓴 숫자 이미지를 모아 둔 데이터셋. 데이터가 잘 정제되어 있어, 학습자들에..
실습 환경은 Python 3.6과 tensorflow 1.5이다. MNIST 손으로 쓴 숫자 이미지를 모아 둔 데이터셋. 데이터가 잘 정제되어 있어, 학습자들에게 머신러닝 학습의 기초로 쓰인다. 1. 데이터셋 읽어 오기 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # read MNIST data mnist = input_data.read_data_sets("./mnist/data/", one_hot=True) 다음과 같이 간단하게 데이터를 읽어올 수 있다. 2. 신경망 모델 구성 MNIST 손글씨 이미지는 28x28 pixel로 이루어져 있다. 즉, 784개의 특징(X)으로 이루어져 있다. label ..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 텐서보드(tensorboard) 텐서플로우에서 제공하는 기본 도구이다. 텐서보드를 이용하면 손실값, 정확도와 같은 결과값을 시각화하여 확인할 수 있다. 텐서보드를 이용하기 위해서는 모델을 다음과 같이 세팅해야 한다. 1. 계층을 name_scope로 묶기 with tf.name_scope('layer1'): W1 = tf.Variable(tf.random_uniform([2, 10], -1., 1.), name='W1') L1 = tf.nn.relu(tf.matmul(X, W1)) 다음과 같이 tf의 name_scope 함수를 통해 계층을 묶고 이름을 붙일 수 있다. 이는 이후 텐서보드의 그래프에서 확인할 수 있다. 계층 뿐만이 아니라 플..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 현업에서는 딥러닝을 이용할 때 모델의 구성, 모델의 학습, 결과 예측을 각각 분리하여 처리해야 하는 경우가 많다(고 한다). 이러한 경우, Saver와 checkpoint 등을 이용해 모델에 관한 정보를 저장하고 불러와 사용하는 방식을 이용한다. 데이터 입력 앞선 예제들과 달리 데이터 역시 주로 프로그램의 내부가 아닌 외부에서 주어진다. 이러한 데이터를 불러오는 방법은 아래와 같다. # 데이터 파일로부터 데이터 받아옴 data = np.loadtxt('./data.csv', delimiter=',', unpack=True, dtype='float32') # 슬라이싱을 통해 입력값과 출력값으로 분리 x_data = np.transpose(d..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 인공 신경망(artificial neural network, ANN) 인공 신경망이란, 뇌내 신경 세포(뉴런)의 동작 원리에 기초한 학습 알고리즘이다. 학습의 목표는 원하는 출력값 y를 만들어내기 위해 입력값 x에 곱하고 더할 적절한 가중치(W)와 편향(b)을 도출하는 것이다. 이러한 과정은 인공신경망 내에서 이루어진다. 인공 신경망을 구현하기 이전에, 구현에 필요한 사전 지식을 먼저 학습하도록 하자. 활성화 함수 인공 신경망을 통과해 도출된 출력 값 y를 입력으로 받아 의도한 변화를 적용하여 반환하는 함수. 대표적으로 ReLU(렐루)가 있다. 신경망의 출력층에서는 잘 사용되지 않는다고 한다. 원-핫 인코딩(one-hot encoding)..