SlideShare a Scribd company logo
빅데이터 ~ 머신(딥)러닝
실무로 배우는 빅데이터 기술
 Tensorflow - Autoencoder 사용
☆ 확장하기 – 13편 ☆
김강원
오토인코더(Autoencoder) 는?
입력값과 최대핚 유사핚 출력값을 생성하는 네트워크를 만들기 위핚
비지도학습 신경망
※ Autoencoder의 기본 개념과 기능들은 구글링을 통해 확인 하세요!
파일럿 프로젝트 확장 (1/2)
Tensorflow &
Autoencoder
책 338 페이지 중에서… (개정판)
Autoencoder로
비정상 스마트카 판별
파일럿 프로젝트 확장 (2/2)
확장편 실습
Tensorflow Autoencoder
(비정상 스마트카 판별)
 Jupyter Notebook 실행
윈도우 시작 메뉴 > Anaconda Prompt 실행
> Activate py35
> jupyter notebook
Step-1
 “12편 Python + Pandas 활용” 소스 파일 오픈 및 실행
Jupyter Home > 12.Python&Pandas 활용.ipynb > 열기
Cell 메뉴 > Run All
Step-2
 Training 및 Test 데이터 생성
Normal = df[df.result == 0]
Bad = df[df.result == 1]
X_train_normal = Normal.sample(frac=0.8)
X_test_bad = Bad.sample(frac=0.2)
X_train_normal = X_train_normal.drop(['result'], axis=1)
X_test_bad = X_test_bad.drop(['result'], axis=1)
inputX_train_normal = X_train_normal.as_matrix()
inputX_test_bad = X_test_bad.as_matrix()
Step-3
 Traning 파라미터 설정
learning_rate = 0.01
epoch_steps = 10
batch_size = 100
n_batch = inputX_train_normal.shape[0]
display_step = 1
Step-4
 Autoencoder 레이어수 설정
num_hidden_1 = 4
num_hidden_2 = 2
num_input = 5
Step-5
 오토인코더 Input/Weight/Biases 변수 정의
X = tf.placeholder("float", [None, num_input])
weights = {
'encoder_h1': tf.Variable(tf.random_normal([num_input, num_hidden_1])),
'encoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_hidden_2])),
'decoder_h1': tf.Variable(tf.random_normal([num_hidden_2, num_hidden_1])),
'decoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_input])),
}
biases = {
'encoder_b1': tf.Variable(tf.random_normal([num_hidden_1])),
'encoder_b2': tf.Variable(tf.random_normal([num_hidden_2])),
'decoder_b1': tf.Variable(tf.random_normal([num_hidden_1])),
'decoder_b2': tf.Variable(tf.random_normal([num_input])),
}
Step-6
 오토인코더/디코더 함수 정의
def encoder(x):
layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1']))
layer_2 = tf.nn.tanh(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2']))
return layer_2
def decoder(x):
layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, weights['decoder_h1']), biases['decoder_b1']))
layer_2 = tf.nn.tanh(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2']))
return layer_2
Step-7
 오토인코더 모델 생성
encoder_op = encoder(X)
decoder_op = decoder(encoder_op)
x_pred = decoder_op
x_true = X
Step-8
 변수 초기화 및 학습모델 저장 설정
init = tf.global_variables_initializer()
save_model = os.path.join("D:model", 'saved_autoencoder_model.ckpt')
saver = tf.train.Saver()
Step-10
 손실값 및 최적화 정의
loss = tf.reduce_mean(tf.pow(x_true - x_pred, 2))
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss)
Step-9
 오토인코더 신경망 학습 및 모델 생성
with tf.Session() as sess:
sess.run(init)
for i in range(1, epoch_steps+1):
for batch in range(int(n_batch/batch_size)):
batch_x=inputX_train_normal[batch*batch_size : (1+batch)*batch_size]
_, l = sess.run([optimizer, loss], feed_dict={X: batch_x})
if i % display_step == 0 or i==1:
print('Epoch %i: Minibatch Loss: %f' % (i, l))
print('### AutoEncoder Training/Model 완료 ###')
save_path = saver.save(sess, save_model)
print("Model saved: %s" % save_path)
Step-11
 오토인코더 모델 테스트
save_model = os.path.join('D:model', 'saved_autoencoder_model.ckpt')
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, save_model)
idx1 = 10
result1 = sess.run(decoder_op, feed_dict={X: inputX_train_normal [[idx1]]})
print("### 정상 데이터 ###")
print("오토인코더 입력 값:", np.around(inputX_train_normal[[idx1]], decimals=2) , ",sum: %0.2f" %
np.sum(inputX_train_normal[idx1]))
print("오토인코더 출력 값:", np.around(result1.astype(float), decimals=2), ",sum: %0.2f" %
np.sum(result1[0]))
print("")
print("------------------------------------------------------------------------------------------")
print("")
idx2 = 20
result2 = sess.run(decoder_op, feed_dict={X: inputX_test_bad[[idx2]]})
print("### 비정상 데이터 ###")
print("오토인코더 입력 값:", np.around(inputX_test_bad[[idx2]],decimals=2)
, ",sum: %0.2f"% np.sum(inputX_test_bad[idx2]) )
print("오토인코더 출력 값:", np.around(result2.astype(float),decimals=2)
, ",sum: %0.2f"% np.sum(result2[0]))
Step-12
실무로 배우는 빅데이터 기술
확장하기 13편–Tensorflow Autoencoder
[ 강의자료 ]
 동 영 상: 유튜브 www.youtube.com
 실습문서: 슬라이드쉐어 www.slideshare.net

More Related Content

PDF
12. Application - Python + Pandas
PDF
3. Install - Tensorflow
PDF
19. Application - Spark Streaming 1
PDF
15. Application - Solr Indexing & Searching
PPTX
Python on Android
PPTX
Java와 Python의 만남: Jython과 Sikuli
PPTX
파이선 실전공략-1
PDF
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
12. Application - Python + Pandas
3. Install - Tensorflow
19. Application - Spark Streaming 1
15. Application - Solr Indexing & Searching
Python on Android
Java와 Python의 만남: Jython과 Sikuli
파이선 실전공략-1
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback

What's hot (13)

PDF
[143] Modern C++ 무조건 써야 해?
PDF
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
PPTX
[Gpg2권]1.1 c++ 게임의 최적화
PDF
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
PDF
사물인터넷 노트7_사물인터넷과 영상처리
PPTX
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
PPTX
Java 어플리케이션 성능튜닝 Part2
PDF
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
PDF
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PPTX
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
PPT
Gcd ppt
PPTX
NO PARALLEL DML
PDF
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[143] Modern C++ 무조건 써야 해?
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
[Gpg2권]1.1 c++ 게임의 최적화
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
사물인터넷 노트7_사물인터넷과 영상처리
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
Java 어플리케이션 성능튜닝 Part2
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
Gcd ppt
NO PARALLEL DML
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Ad

Similar to 13. Application - Tensorflow Autoencoder (20)

PPTX
Android+init+process
PDF
Multi mechanize
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
PDF
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
PPTX
[SWCON211] LectureCode_13_Matlab Practice.pptx
PDF
Unity ml agent quick guide
PDF
Modern C++ 프로그래머를 위한 CPP11/14 핵심
PDF
코드 생성을 사용해 개발 속도 높이기 NDC2011
PPTX
사운드처리_텀과제_이정근.pptx
PDF
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
PDF
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
PPTX
Deview 2019 눈발자국
PDF
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
PDF
KGC2010 - 낡은 코드에 단위테스트 넣기
PPTX
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
PDF
IPython
PDF
[2018] Java를 위한, Java에 의한 도구들
PDF
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
PDF
[신경망기초] 퍼셉트론구현
Android+init+process
Multi mechanize
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
[SWCON211] LectureCode_13_Matlab Practice.pptx
Unity ml agent quick guide
Modern C++ 프로그래머를 위한 CPP11/14 핵심
코드 생성을 사용해 개발 속도 높이기 NDC2011
사운드처리_텀과제_이정근.pptx
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
Deview 2019 눈발자국
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [전진 4드론] : RAD(Reinforcement learning method for ...
KGC2010 - 낡은 코드에 단위테스트 넣기
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
IPython
[2018] Java를 위한, Java에 의한 도구들
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
[신경망기초] 퍼셉트론구현
Ad

More from merry7 (13)

PDF
18. Install - Spark Streaming Env.
PDF
17. Application - Nutch + Solr
PDF
16. Install - Nutch
PDF
14. Install - Solr
PDF
11. Application - Phoenix
PDF
10. Install - Phoenix
PDF
9. Application - WebHDFS
PDF
7. Application - Hive Bucket
PDF
6. Application - NiFi
PDF
5. Install - NiFi
PDF
4. Application - Oozie Fork
PDF
2. Application - Sqoop Import
PDF
1. Application - Pig
18. Install - Spark Streaming Env.
17. Application - Nutch + Solr
16. Install - Nutch
14. Install - Solr
11. Application - Phoenix
10. Install - Phoenix
9. Application - WebHDFS
7. Application - Hive Bucket
6. Application - NiFi
5. Install - NiFi
4. Application - Oozie Fork
2. Application - Sqoop Import
1. Application - Pig

13. Application - Tensorflow Autoencoder

  • 1. 빅데이터 ~ 머신(딥)러닝 실무로 배우는 빅데이터 기술  Tensorflow - Autoencoder 사용 ☆ 확장하기 – 13편 ☆ 김강원
  • 2. 오토인코더(Autoencoder) 는? 입력값과 최대핚 유사핚 출력값을 생성하는 네트워크를 만들기 위핚 비지도학습 신경망 ※ Autoencoder의 기본 개념과 기능들은 구글링을 통해 확인 하세요!
  • 3. 파일럿 프로젝트 확장 (1/2) Tensorflow & Autoencoder
  • 4. 책 338 페이지 중에서… (개정판) Autoencoder로 비정상 스마트카 판별 파일럿 프로젝트 확장 (2/2)
  • 6.  Jupyter Notebook 실행 윈도우 시작 메뉴 > Anaconda Prompt 실행 > Activate py35 > jupyter notebook Step-1  “12편 Python + Pandas 활용” 소스 파일 오픈 및 실행 Jupyter Home > 12.Python&Pandas 활용.ipynb > 열기 Cell 메뉴 > Run All Step-2  Training 및 Test 데이터 생성 Normal = df[df.result == 0] Bad = df[df.result == 1] X_train_normal = Normal.sample(frac=0.8) X_test_bad = Bad.sample(frac=0.2) X_train_normal = X_train_normal.drop(['result'], axis=1) X_test_bad = X_test_bad.drop(['result'], axis=1) inputX_train_normal = X_train_normal.as_matrix() inputX_test_bad = X_test_bad.as_matrix() Step-3
  • 7.  Traning 파라미터 설정 learning_rate = 0.01 epoch_steps = 10 batch_size = 100 n_batch = inputX_train_normal.shape[0] display_step = 1 Step-4  Autoencoder 레이어수 설정 num_hidden_1 = 4 num_hidden_2 = 2 num_input = 5 Step-5
  • 8.  오토인코더 Input/Weight/Biases 변수 정의 X = tf.placeholder("float", [None, num_input]) weights = { 'encoder_h1': tf.Variable(tf.random_normal([num_input, num_hidden_1])), 'encoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_hidden_2])), 'decoder_h1': tf.Variable(tf.random_normal([num_hidden_2, num_hidden_1])), 'decoder_h2': tf.Variable(tf.random_normal([num_hidden_1, num_input])), } biases = { 'encoder_b1': tf.Variable(tf.random_normal([num_hidden_1])), 'encoder_b2': tf.Variable(tf.random_normal([num_hidden_2])), 'decoder_b1': tf.Variable(tf.random_normal([num_hidden_1])), 'decoder_b2': tf.Variable(tf.random_normal([num_input])), } Step-6
  • 9.  오토인코더/디코더 함수 정의 def encoder(x): layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1'])) layer_2 = tf.nn.tanh(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2'])) return layer_2 def decoder(x): layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, weights['decoder_h1']), biases['decoder_b1'])) layer_2 = tf.nn.tanh(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2'])) return layer_2 Step-7  오토인코더 모델 생성 encoder_op = encoder(X) decoder_op = decoder(encoder_op) x_pred = decoder_op x_true = X Step-8
  • 10.  변수 초기화 및 학습모델 저장 설정 init = tf.global_variables_initializer() save_model = os.path.join("D:model", 'saved_autoencoder_model.ckpt') saver = tf.train.Saver() Step-10  손실값 및 최적화 정의 loss = tf.reduce_mean(tf.pow(x_true - x_pred, 2)) optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss) Step-9
  • 11.  오토인코더 신경망 학습 및 모델 생성 with tf.Session() as sess: sess.run(init) for i in range(1, epoch_steps+1): for batch in range(int(n_batch/batch_size)): batch_x=inputX_train_normal[batch*batch_size : (1+batch)*batch_size] _, l = sess.run([optimizer, loss], feed_dict={X: batch_x}) if i % display_step == 0 or i==1: print('Epoch %i: Minibatch Loss: %f' % (i, l)) print('### AutoEncoder Training/Model 완료 ###') save_path = saver.save(sess, save_model) print("Model saved: %s" % save_path) Step-11
  • 12.  오토인코더 모델 테스트 save_model = os.path.join('D:model', 'saved_autoencoder_model.ckpt') saver = tf.train.Saver() with tf.Session() as sess: saver.restore(sess, save_model) idx1 = 10 result1 = sess.run(decoder_op, feed_dict={X: inputX_train_normal [[idx1]]}) print("### 정상 데이터 ###") print("오토인코더 입력 값:", np.around(inputX_train_normal[[idx1]], decimals=2) , ",sum: %0.2f" % np.sum(inputX_train_normal[idx1])) print("오토인코더 출력 값:", np.around(result1.astype(float), decimals=2), ",sum: %0.2f" % np.sum(result1[0])) print("") print("------------------------------------------------------------------------------------------") print("") idx2 = 20 result2 = sess.run(decoder_op, feed_dict={X: inputX_test_bad[[idx2]]}) print("### 비정상 데이터 ###") print("오토인코더 입력 값:", np.around(inputX_test_bad[[idx2]],decimals=2) , ",sum: %0.2f"% np.sum(inputX_test_bad[idx2]) ) print("오토인코더 출력 값:", np.around(result2.astype(float),decimals=2) , ",sum: %0.2f"% np.sum(result2[0])) Step-12
  • 13. 실무로 배우는 빅데이터 기술 확장하기 13편–Tensorflow Autoencoder [ 강의자료 ]  동 영 상: 유튜브 www.youtube.com  실습문서: 슬라이드쉐어 www.slideshare.net