레플리
글 수 203

텐서플로우에서 소프트맥스로 숫자 인식 구현

조회 수 1375 추천 수 0 2017.03.09 12:16:27


http://bcho.tistory.com/1154

 

 

 

Screen_Shot_2016-12-28_at_1.58.24_PM.png

 

MNIST는 텐서플로우에 기본으로 내장된 숫자 이미지 데이터입니다. 28x28 사이즈의 숫자가 0~1의 값으로 저장되어 있습니다. 이 데이터를 사용하여 소프트맥스 회귀(Softmax Regression) 방법으로 학습을 해보겠습니다.

 

 

 

softmax-regression-scalargraph.png

 

소프트맥스 회귀는 로지스틱 회귀을 확장한 것입니다. 로지스틱은 두가지로만 구분이 가능하지만 소프트맥스는 n개로 분류할 수 있습니다. 아래 링크는 로지스틱 회귀에 대한 설명입니다.

 

http://cafe.naver.com/aidreaming/483

 

소프트맥스는 위의 그림을 보시면 아시겠지만 신경망의 단층 퍼셉트론과 거의 유사합니다. 딥러닝 CNN에서 마지막 단계가 fully-connected layer인데 보통 히든 레이어와 소프트맥스를 연결해서 구현하는 것 같습니다.

 

 

 

텐서플로우 코드는 아래와 같습니다.

 

---------------------------------------------------------------------

from tensorflow.examples.tutorials.mnist import input_data

import tensorflow as tf

 

 

# MNIST 데이터를 해당 폴더에 다운받아 압축을 해제하고 변수에 저장

mnist = input_data.read_data_sets('mnist/input_data', one_hot=True)

 

# 입력값 플레이스홀더 설정

x = tf.placeholder(tf.float32, [None, 784])

 

# 가중치 변수

W = tf.Variable(tf.zeros([784, 10]))

 

# 편향값 변수

b = tf.Variable(tf.zeros([10]))

 

# 소프트맥스 설정

k = tf.matmul(x, W) + b

y = tf.nn.softmax(k)

 

 

# 이미지의 실제 숫자값 플레이스홀더 설정 (10개의 열은 각각 0~9 숫자를 나타냄)

y_ = tf.placeholder(tf.float32, [None, 10])             

 

# 학습률 설정                                                                  

learning_rate = 0.5

 

# 출력값 y와 실제 숫자값 y_ 사이의 크로스 엔트로피로 코스트 설정

# softmax_cross_entropy_with_logits()가 softmax()를 포함하기 때문에 y대신 k 입력

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(k, y_))

 

# 코스트가 낮게 되도록 경사 하강법 실행

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

 

 

# 세션 초기화

print ("Training")

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

 

# 1000번씩, 전체 데이타에서 100개씩 뽑아서 트레이닝을 함.  

for _ in range(1000):

    batch_xs, batch_ys = mnist.train.next_batch(100)

    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

 

# 학습된 가중치와 편향값 출력

print('W is',sess.run(W))

print ('b is ',sess.run(b))

---------------------------------------------------------------------

List of Articles
제목 글쓴이 날짜sort 조회 수
GAN의 상용화를 알리는 시작 - 포토샵 뉴럴 필터 깊은바다 2020-10-22 884
GAN을 이용한 염색 및 헤어 스타일 합성 - 꽤 GAN찮은 헤어살롱 깊은바다 2020-10-29 2817
알렉스넷과 Seq2Seq의 창시자 일리야 수츠케버(Ilya Sutskever) 깊은바다 2020-11-17 832
GAN으로 만든 얼굴을 테스트할 수 있는 뉴욕타임스의 기사 file 깊은바다 2020-11-24 682
문장을 사진으로 변환하는 GPT-3 모델, DALL-E 깊은바다 2021-01-09 986
톰 크루즈의 딥페이크 영상 file 깊은바다 2021-02-28 672
사진 한 장으로 움직이는 얼굴을 만드는 사이트 - Deep Nostalgia 깊은바다 2021-03-01 4289
이젠 모델 구축도 학습도 필요없다, OpenAI의 이미지인식 모델 CLIP file 깊은바다 2021-03-07 4359
스냅챕의 디즈니 필터 깊은바다 2021-03-12 529
뉴런 하나로 특정 개념을 표현한다, CLIP 모델에서 개념 뉴런을 발견 file 깊은바다 2021-03-12 575
딥러닝의 창시자인 제프리 힌튼이 구글에 합류하게 된 스토리 깊은바다 2021-03-18 418
GPT-3로 광고문구를 만드는 서비스 - Copy.ai 깊은바다 2021-03-22 648
말로 설명하여 이미지를 변형하는 GAN - StyleCLIP file 깊은바다 2021-04-04 1819
GAN으로 얼굴사진을 생성하는 사이트 - Face Generator file 깊은바다 2021-04-28 2797
Transformer와 동급의 성능에 속도는 훨씬 빨라진 MLP-Mixer file 깊은바다 2021-06-11 1447