SlideShare a Scribd company logo
1 of 46
텐서플로 프로그래밍
도정찬
목차
0. 주피터 노트북 사용 준비하기
1. 텐서와 그래프 실행
2. 플레이스 홀더와 변수
3. 선형회귀모델 구현하기
0. 주피터 노트북 사용 준비하기
0. 주피터 노트북 사용 준비하기
0. 주피터 노트북 사용 준비하기
주피터 노트북을 실행하고
[New]-[Folder]를 눌러 폴더를 하나 생성합시다
0. 주피터 노트북 사용 준비하기
폴더를 생성하면 'Untitled Folder'가 하나 생깁니다.
이 폴더를 체크 한 후 좌측 상단의 [Rename] 버튼을 눌러줍시다.
0. 주피터 노트북 사용 준비하기
작업 공간으로 사용할 폴더 이름을 정해주고 [Rename] 버튼을 눌러줍시다.
다음 변경된 폴더를 눌러 폴더 안으로 들어갑시다.
0. 주피터 노트북 사용 준비하기
작업 폴더내에 들어와 [New]-[Python3] 버튼을 눌러주세요.
0. 주피터 노트북 사용 준비하기
새 python 파일을 만들면, 'Untitled' 이름의 새 창이 나옵니다.
Jupyter 로고 옆 'Untitled'누르면 해당 파일의 이름을 변경할 수 있습니다.
0. 주피터 노트북 사용 준비하기
주피터 노트북 사용 준비 끝
*주피터 노트북의 자세한 사용방법은 “주피터 노트북 이해하기“ 자료를 참고하세요.*
1. 텐서와 그래프 실행
1. 텐서와 그래프 실행
1. 텐서와 그래프 실행
텐서플로우를 사용 하기위해 먼저 임포트를 합니다.
텅 빈 cell에다 import tensorflow as tf 입력 후
키보드 [shift]+[enter]를 누르면, 해당 셀이 실행되고 다음 셀칸이 만들어집니다.
1. 텐서와 그래프 실행
변수 hello에 문자열 데이터('Hello, Tensorflow!')를 담은 상수 텐서를 담고,
print() 함수로 실행을 하면 ‘Hello, Tensorflow!'가 아닌 오른쪽 사진과 같이 나옵니다.
1. 텐서와 그래프 실행
텐서플로우는 계산 모델을 설계하고 실행하는 라이브러리입니다.
설계된 계산 모델은 하나의 session에서 실행하여 모델의 값들이 계속 수정이 이뤄집니다.
텐서 데이터들은 모델의 생성 상태, 반복 시점에 따라 계속 바뀌거나 존재하지 않을수도 있어
텐서플로우의 자료 구조인 텐서를 print()와 같은 함수로 바로 출력하면 해당 데이터의 내용이 아니라
해당 텐서에 들어가는 데이터의 타입, 길이, 형태등의 정보를 출력합니다.
1. 텐서와 그래프 실행
플레이스 홀더 상수 변수
텐서의 자료형 종류
문자, 문자열
실수, 정수, 부울 등
문자, 문자열
실수, 정수, 부울 등
집합, 배열, 딕셔너리,
리스트 등
1. 텐서와 그래프 실행
텐서의 자료형 특징
랭크
(차원수)
셰이프
(차원형태)
1. 텐서와 그래프 실행
텐서 자료 예시
3 # 랭크가 0인 텐서; 셰이프는 []
-> 0차원 길이가 0인 데이터
[1. , 2. , 3.] # 랭크가 1인 텐서, 셰이프는 [3]
-> 1차원, 길이가 3인 데이터
[[1. , 2. , 3.], [4., 5., 6.]] # 랭크가 2인 텐서; 셰이프는 [2,3]
-> 2차원, 2행 3열의 데이터
[[[1. , 2. , 3.]], [[4., 5., 6.]]] # 랭크가 3인 텐서; 셰이프는 [2,1,3]
-> 3차원, 2층-1행-3열의 데이터
1. 텐서와 그래프 실행
일반 코드의 경우 42가 나오겠지만
텐서 데이터를 그대로 print() 함수로 출력하면
다음과 같이 해당 데이터의 정보를 보여줍니다.
1. 텐서와 그래프 실행
이전에 '밑바닥부터 시작하는 딥러닝'의 5장 오차역전파법을 보시면
순전파와 역전파 그래프를 그려 학습하였습니다.
텐서플로우 또한 이러한 퍼셉트론으로 구성된 신경망 그래프를 그려 동작하게 됩니다.
1. 텐서와 그래프 실행
그래프(신경망 모델)를 사용하는
텐서플로우 프로그램의 구조는 아래의 두가지로 분리되어 있습니다.
1.그래프 생성
2.그래프 실행
1. 텐서와 그래프 실행
a = tf.constant(10)
b = tf.constant(32)
c = tf.add(a,b)
sess.run(c)
10 32
+
a b
c
그래프
생성
그래프
실행
10+32
연산을 실제로 수행
그래프는 텐서들의 연산 모음(구성)으로 생각하면 됩니다.
텐서플로우는 텐서와 텐서간의 연산을 정의로 그래프를 만들고(1.그래프 생성)
연산 실행 코드를 원하는 '원하는 시점'에 넣어 연산을 수행하도록 합니다.(2.그래프 실행)
이를 지연 실행(lazy evaluation)이라 합니다.
1. 텐서와 그래프 실행
그래프의 실행은 Session 안에서 이뤄지며,
아래와 같이 Session 객체와 run 함수를 이용하면 됩니다.
1. 텐서와 그래프 실행
전체코드
2. 플레이스홀더와 변수
2. 플레이스홀더와 변수
2. 플레이스홀더와 변수
플레이스 홀더 상수 변수
텐서의 자료형 종류
문자, 문자열
실수, 정수, 부울 등
문자, 문자열
실수, 정수, 부울 등
집합, 배열, 딕셔너리,
리스트 등
2. 플레이스홀더와 변수
placeholder 텐서 X는 float32 타입의 ?행,3열([None,3]) 데이터를 사용합니다.
2. 플레이스홀더와 변수
텐서 X에는 2차원 행렬로 ?행, 3열의 데이터만 사용할 수 있습니다.
아래는 x에 넣기위한 (2,3) , (1,3) , (3,3) 형태(shape)의 데이터입니다.
2. 플레이스홀더와 변수
플레이스 홀더 상수 변수
텐서의 자료형 종류
문자, 문자열
실수, 정수, 부울 등
문자, 문자열
실수, 정수, 부울,
배열, 리스트 등
집합, 배열, 딕셔너리,
리스트 등
2. 플레이스홀더와 변수
tf.Variable()은 텐서 변수를 생성하는 함수로 그래프에서 하나의 변수 역활을 합니다.
이 변수는 constant와 다르게 그래프의 연산 도중에 값이 변할 수 있습니다.
Variable을 생성할때 Constant와 마찬가지로 초기화 값을 직접 넣거나 임의의 확률 분포를 생성하여 초기화합니다.,
**아래의 tf.random_normal() 함수는 정규분포 값을 생성하는 함수로 [3,2] 형태를 매개변수로 넣으면
3행 2열의 정규분포를 따르는 확률값 행렬이 생성됩니다.
2. 플레이스홀더와 변수
tf.matmul은 행렬의 내적 연산을 구하는 함수로
행렬을 이용한 신경망 연산에서 많이 사용하게 됩니다.
matmul()함수의 결과에 편향 b를 더하여 신경망 한층의 출력값을 만들게 됩니다.
2. 플레이스홀더와 변수
플레이스 홀더와 변수를 이용한 좌측의 코드를 그리면 다음과 같습니다.
*placeholder인 텐서 X의 경우 그래프 연산(session)에서 시작하기 전에 데이터들이 입력됩니다.
이 그래프가 이해되지 않은 분들은 먼저 “밑바닥부터 시작하는 딥러닝”을 공부하시기 바랍니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
session 객체를 생성하여
텐서플로우 그래프가 계산되는 과정입니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
먼저 tf.global_variables_initializer() 함수를 sess.run()으로 실행하는데,
이 함수로 그래프를 사용하기 전에 변수 텐서들을 초기화 합니다.
변수 생성 시 매개변수 값에 따라 변수 텐서 W, b의 값이 초기화가 됩니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
x_data는 일반 파이썬 리스트 데이터이므로
sess.run 없이 그대로 출력됩니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
sess.run(W)에서는 변수 텐서 W의 값을 출력합니다.
초기화 때 3행 2열의 2차원 실수 데이터로 변수를 생성하여 그대로 출력이 됩니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
sess.run(b)에서는 변수 텐서 b의 값을 출력합니다.
초기화 때 2행 1열의 2차원 실수 데이터로 변수를 생성하여 그대로 출력됩니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
sess.run(expr,feed_dict={X:x_data})에서는 expr까지의 연산을 진행하게 됩니다.
이 시점에서 feed_dict를 이용하여 플레이스홀더 텐서 X에 어느 데이터를 넣을지 선언합니다.
feed_dict={(플레이스홀더):(해당 형태의 데이터)}를 따라 데이터를 주입하여 연산결과를 출력합니다.
Variable
[3,2]
placeholder
[None,3]
matmul
W X
b
+
Variable
[2,1]
expr
2. 플레이스홀더와 변수
전체 코드
2. 플레이스홀더와 변수
전체 코드 요약
placeholder 생성
placeholder 데이터 생성
변수 생성
연산과정 생성
세션 객체 생성 및 그래프 변수 초기화
placeholder에 사용할 데이터 출력
변수 W,b의 데이터 출력
placeholder에 x_data를 주입하여
그래프 연산 결과 출력
3. 선형회귀모델 구현하기
3. 선형회귀모델 구현하기
3. 선형회귀모델 구현하기
선형 회귀란?
학습된 선형 모델을 이용해 주어진 입력 데이터를 분류(예측) 하는것으로
입력 x를 통해 출력 y를 판단합니다.
Y
X
입력 데이터
3. 선형회귀모델 구현하기
그래프 생성하기
x 를 이용하여 y를 구하는 선형회귀모델 그래프를 구현합니다.
**여기서 W와 X는 행렬이 아니므로 matmul이 아닌 기본 곱셈 연산자를 사용합니다.
3. 선형회귀모델 구현하기
비용 함수와 경사하강법을 이용한 최적화 함수 연산 그래프 생성
평균 제곱오차함수로 비용함수를 만들고,
경사하강법 최적화함수를 이용하여 비용함수가 최저가 되는 가중치와 편향값을 찾습니다(학습).
3. 선형회귀모델 구현하기
선형회귀모델 학습(그래프 실행)하기
세션 객체를 생성하여 100회 학습을 통해 선형회귀모델을 학습 합니다.
처음 비용함수의 값이 1.199859이었으나 학습후 0.000811까지 비용 함수의 값이 줄었습니다.
.
.
.
비용함수 초기화
비용함수 계산(cost) 및 최적화(train_op) 수행
학습 횟수, 비용함수 결과 값, 가중치 값, 편향 값
3. 선형회귀모델 구현하기
학습된 모델로 데이터 분류하기
학습된 퍼셉트론인 hypothesi의 placeholder X의 값이 5와 2.5일때
출력 Y도 정확히 예측하였습니다.
3. 선형회귀모델 구현하기
전체코드
감사합니다

More Related Content

What's hot

이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약Sung Yub Kim
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
Data Structures
Data StructuresData Structures
Data Structuresskku_npc
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편Yong Joon Moon
 
파이썬 자료형 발표
파이썬 자료형 발표파이썬 자료형 발표
파이썬 자료형 발표joonjhokil
 
Python basic grammer
Python basic grammerPython basic grammer
Python basic grammerCore.Today
 
Tensorflow
TensorflowTensorflow
Tensorflowchs71
 
C++11 Tuple
C++11 TupleC++11 Tuple
C++11 Tuplequxn6
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 Yong Joon Moon
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
Python if loop-function
Python if loop-functionPython if loop-function
Python if loop-function건희 김
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for testKyunghoon Kim
 

What's hot (20)

이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
Data Structures
Data StructuresData Structures
Data Structures
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편
 
C++ stl
C++ stlC++ stl
C++ stl
 
파이썬 자료형 발표
파이썬 자료형 발표파이썬 자료형 발표
파이썬 자료형 발표
 
Python basic grammer
Python basic grammerPython basic grammer
Python basic grammer
 
Tensorflow
TensorflowTensorflow
Tensorflow
 
C++11 Tuple
C++11 TupleC++11 Tuple
C++11 Tuple
 
Haskell study 7
Haskell study 7Haskell study 7
Haskell study 7
 
7.데이터수정
7.데이터수정7.데이터수정
7.데이터수정
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기
 
컴퓨터개론09
컴퓨터개론09컴퓨터개론09
컴퓨터개론09
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
Python if loop-function
Python if loop-functionPython if loop-function
Python if loop-function
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for test
 

Similar to 텐서플로우-기초 프로그래밍

파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열Kim YoSep
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Park Jonggun
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기Jongwook Choi
 
Python Programming: Type and Object
Python Programming: Type and ObjectPython Programming: Type and Object
Python Programming: Type and ObjectChan Shik Lim
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 
2015 Kitel C 언어 강좌3
2015 Kitel C 언어 강좌32015 Kitel C 언어 강좌3
2015 Kitel C 언어 강좌3ssuseraf62e91
 
Python datatype
Python datatypePython datatype
Python datatype건희 김
 
Swift 튜플 (tuples)
Swift 튜플 (tuples)Swift 튜플 (tuples)
Swift 튜플 (tuples)주원 김
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇYoonwhan Lee
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 RYoonwhan Lee
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 

Similar to 텐서플로우-기초 프로그래밍 (20)

파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
Python Programming: Type and Object
Python Programming: Type and ObjectPython Programming: Type and Object
Python Programming: Type and Object
 
3주차 스터디
3주차 스터디3주차 스터디
3주차 스터디
 
R intro
R introR intro
R intro
 
강의자료3
강의자료3강의자료3
강의자료3
 
2012 Ds 01
2012 Ds 012012 Ds 01
2012 Ds 01
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
2015 Kitel C 언어 강좌3
2015 Kitel C 언어 강좌32015 Kitel C 언어 강좌3
2015 Kitel C 언어 강좌3
 
Python datatype
Python datatypePython datatype
Python datatype
 
자료구조02
자료구조02자료구조02
자료구조02
 
Swift 튜플 (tuples)
Swift 튜플 (tuples)Swift 튜플 (tuples)
Swift 튜플 (tuples)
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇ
 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 R
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
Power bi
Power biPower bi
Power bi
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 

More from jdo

[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리jdo
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수jdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Othersjdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNetjdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNetjdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16jdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷jdo
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2jdo
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1jdo
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2jdo
 
[컴퓨터비전과 인공지능] 6. 역전파 1
[컴퓨터비전과 인공지능] 6. 역전파 1[컴퓨터비전과 인공지능] 6. 역전파 1
[컴퓨터비전과 인공지능] 6. 역전파 1jdo
 
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수jdo
 
[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트jdo
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망jdo
 
[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열jdo
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화jdo
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제jdo
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부jdo
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competitionjdo
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식jdo
 

More from jdo (20)

[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2
 
[컴퓨터비전과 인공지능] 6. 역전파 1
[컴퓨터비전과 인공지능] 6. 역전파 1[컴퓨터비전과 인공지능] 6. 역전파 1
[컴퓨터비전과 인공지능] 6. 역전파 1
 
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
 
[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망
 
[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competition
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식
 

텐서플로우-기초 프로그래밍

  • 2. 목차 0. 주피터 노트북 사용 준비하기 1. 텐서와 그래프 실행 2. 플레이스 홀더와 변수 3. 선형회귀모델 구현하기
  • 3. 0. 주피터 노트북 사용 준비하기 0. 주피터 노트북 사용 준비하기
  • 4. 0. 주피터 노트북 사용 준비하기 주피터 노트북을 실행하고 [New]-[Folder]를 눌러 폴더를 하나 생성합시다
  • 5. 0. 주피터 노트북 사용 준비하기 폴더를 생성하면 'Untitled Folder'가 하나 생깁니다. 이 폴더를 체크 한 후 좌측 상단의 [Rename] 버튼을 눌러줍시다.
  • 6. 0. 주피터 노트북 사용 준비하기 작업 공간으로 사용할 폴더 이름을 정해주고 [Rename] 버튼을 눌러줍시다. 다음 변경된 폴더를 눌러 폴더 안으로 들어갑시다.
  • 7. 0. 주피터 노트북 사용 준비하기 작업 폴더내에 들어와 [New]-[Python3] 버튼을 눌러주세요.
  • 8. 0. 주피터 노트북 사용 준비하기 새 python 파일을 만들면, 'Untitled' 이름의 새 창이 나옵니다. Jupyter 로고 옆 'Untitled'누르면 해당 파일의 이름을 변경할 수 있습니다.
  • 9. 0. 주피터 노트북 사용 준비하기 주피터 노트북 사용 준비 끝 *주피터 노트북의 자세한 사용방법은 “주피터 노트북 이해하기“ 자료를 참고하세요.*
  • 10. 1. 텐서와 그래프 실행 1. 텐서와 그래프 실행
  • 11. 1. 텐서와 그래프 실행 텐서플로우를 사용 하기위해 먼저 임포트를 합니다. 텅 빈 cell에다 import tensorflow as tf 입력 후 키보드 [shift]+[enter]를 누르면, 해당 셀이 실행되고 다음 셀칸이 만들어집니다.
  • 12. 1. 텐서와 그래프 실행 변수 hello에 문자열 데이터('Hello, Tensorflow!')를 담은 상수 텐서를 담고, print() 함수로 실행을 하면 ‘Hello, Tensorflow!'가 아닌 오른쪽 사진과 같이 나옵니다.
  • 13. 1. 텐서와 그래프 실행 텐서플로우는 계산 모델을 설계하고 실행하는 라이브러리입니다. 설계된 계산 모델은 하나의 session에서 실행하여 모델의 값들이 계속 수정이 이뤄집니다. 텐서 데이터들은 모델의 생성 상태, 반복 시점에 따라 계속 바뀌거나 존재하지 않을수도 있어 텐서플로우의 자료 구조인 텐서를 print()와 같은 함수로 바로 출력하면 해당 데이터의 내용이 아니라 해당 텐서에 들어가는 데이터의 타입, 길이, 형태등의 정보를 출력합니다.
  • 14. 1. 텐서와 그래프 실행 플레이스 홀더 상수 변수 텐서의 자료형 종류 문자, 문자열 실수, 정수, 부울 등 문자, 문자열 실수, 정수, 부울 등 집합, 배열, 딕셔너리, 리스트 등
  • 15. 1. 텐서와 그래프 실행 텐서의 자료형 특징 랭크 (차원수) 셰이프 (차원형태)
  • 16. 1. 텐서와 그래프 실행 텐서 자료 예시 3 # 랭크가 0인 텐서; 셰이프는 [] -> 0차원 길이가 0인 데이터 [1. , 2. , 3.] # 랭크가 1인 텐서, 셰이프는 [3] -> 1차원, 길이가 3인 데이터 [[1. , 2. , 3.], [4., 5., 6.]] # 랭크가 2인 텐서; 셰이프는 [2,3] -> 2차원, 2행 3열의 데이터 [[[1. , 2. , 3.]], [[4., 5., 6.]]] # 랭크가 3인 텐서; 셰이프는 [2,1,3] -> 3차원, 2층-1행-3열의 데이터
  • 17. 1. 텐서와 그래프 실행 일반 코드의 경우 42가 나오겠지만 텐서 데이터를 그대로 print() 함수로 출력하면 다음과 같이 해당 데이터의 정보를 보여줍니다.
  • 18. 1. 텐서와 그래프 실행 이전에 '밑바닥부터 시작하는 딥러닝'의 5장 오차역전파법을 보시면 순전파와 역전파 그래프를 그려 학습하였습니다. 텐서플로우 또한 이러한 퍼셉트론으로 구성된 신경망 그래프를 그려 동작하게 됩니다.
  • 19. 1. 텐서와 그래프 실행 그래프(신경망 모델)를 사용하는 텐서플로우 프로그램의 구조는 아래의 두가지로 분리되어 있습니다. 1.그래프 생성 2.그래프 실행
  • 20. 1. 텐서와 그래프 실행 a = tf.constant(10) b = tf.constant(32) c = tf.add(a,b) sess.run(c) 10 32 + a b c 그래프 생성 그래프 실행 10+32 연산을 실제로 수행 그래프는 텐서들의 연산 모음(구성)으로 생각하면 됩니다. 텐서플로우는 텐서와 텐서간의 연산을 정의로 그래프를 만들고(1.그래프 생성) 연산 실행 코드를 원하는 '원하는 시점'에 넣어 연산을 수행하도록 합니다.(2.그래프 실행) 이를 지연 실행(lazy evaluation)이라 합니다.
  • 21. 1. 텐서와 그래프 실행 그래프의 실행은 Session 안에서 이뤄지며, 아래와 같이 Session 객체와 run 함수를 이용하면 됩니다.
  • 22. 1. 텐서와 그래프 실행 전체코드
  • 23. 2. 플레이스홀더와 변수 2. 플레이스홀더와 변수
  • 24. 2. 플레이스홀더와 변수 플레이스 홀더 상수 변수 텐서의 자료형 종류 문자, 문자열 실수, 정수, 부울 등 문자, 문자열 실수, 정수, 부울 등 집합, 배열, 딕셔너리, 리스트 등
  • 25. 2. 플레이스홀더와 변수 placeholder 텐서 X는 float32 타입의 ?행,3열([None,3]) 데이터를 사용합니다.
  • 26. 2. 플레이스홀더와 변수 텐서 X에는 2차원 행렬로 ?행, 3열의 데이터만 사용할 수 있습니다. 아래는 x에 넣기위한 (2,3) , (1,3) , (3,3) 형태(shape)의 데이터입니다.
  • 27. 2. 플레이스홀더와 변수 플레이스 홀더 상수 변수 텐서의 자료형 종류 문자, 문자열 실수, 정수, 부울 등 문자, 문자열 실수, 정수, 부울, 배열, 리스트 등 집합, 배열, 딕셔너리, 리스트 등
  • 28. 2. 플레이스홀더와 변수 tf.Variable()은 텐서 변수를 생성하는 함수로 그래프에서 하나의 변수 역활을 합니다. 이 변수는 constant와 다르게 그래프의 연산 도중에 값이 변할 수 있습니다. Variable을 생성할때 Constant와 마찬가지로 초기화 값을 직접 넣거나 임의의 확률 분포를 생성하여 초기화합니다., **아래의 tf.random_normal() 함수는 정규분포 값을 생성하는 함수로 [3,2] 형태를 매개변수로 넣으면 3행 2열의 정규분포를 따르는 확률값 행렬이 생성됩니다.
  • 29. 2. 플레이스홀더와 변수 tf.matmul은 행렬의 내적 연산을 구하는 함수로 행렬을 이용한 신경망 연산에서 많이 사용하게 됩니다. matmul()함수의 결과에 편향 b를 더하여 신경망 한층의 출력값을 만들게 됩니다.
  • 30. 2. 플레이스홀더와 변수 플레이스 홀더와 변수를 이용한 좌측의 코드를 그리면 다음과 같습니다. *placeholder인 텐서 X의 경우 그래프 연산(session)에서 시작하기 전에 데이터들이 입력됩니다. 이 그래프가 이해되지 않은 분들은 먼저 “밑바닥부터 시작하는 딥러닝”을 공부하시기 바랍니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 31. 2. 플레이스홀더와 변수 session 객체를 생성하여 텐서플로우 그래프가 계산되는 과정입니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 32. 2. 플레이스홀더와 변수 먼저 tf.global_variables_initializer() 함수를 sess.run()으로 실행하는데, 이 함수로 그래프를 사용하기 전에 변수 텐서들을 초기화 합니다. 변수 생성 시 매개변수 값에 따라 변수 텐서 W, b의 값이 초기화가 됩니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 33. 2. 플레이스홀더와 변수 x_data는 일반 파이썬 리스트 데이터이므로 sess.run 없이 그대로 출력됩니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 34. 2. 플레이스홀더와 변수 sess.run(W)에서는 변수 텐서 W의 값을 출력합니다. 초기화 때 3행 2열의 2차원 실수 데이터로 변수를 생성하여 그대로 출력이 됩니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 35. 2. 플레이스홀더와 변수 sess.run(b)에서는 변수 텐서 b의 값을 출력합니다. 초기화 때 2행 1열의 2차원 실수 데이터로 변수를 생성하여 그대로 출력됩니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 36. 2. 플레이스홀더와 변수 sess.run(expr,feed_dict={X:x_data})에서는 expr까지의 연산을 진행하게 됩니다. 이 시점에서 feed_dict를 이용하여 플레이스홀더 텐서 X에 어느 데이터를 넣을지 선언합니다. feed_dict={(플레이스홀더):(해당 형태의 데이터)}를 따라 데이터를 주입하여 연산결과를 출력합니다. Variable [3,2] placeholder [None,3] matmul W X b + Variable [2,1] expr
  • 38. 2. 플레이스홀더와 변수 전체 코드 요약 placeholder 생성 placeholder 데이터 생성 변수 생성 연산과정 생성 세션 객체 생성 및 그래프 변수 초기화 placeholder에 사용할 데이터 출력 변수 W,b의 데이터 출력 placeholder에 x_data를 주입하여 그래프 연산 결과 출력
  • 39. 3. 선형회귀모델 구현하기 3. 선형회귀모델 구현하기
  • 40. 3. 선형회귀모델 구현하기 선형 회귀란? 학습된 선형 모델을 이용해 주어진 입력 데이터를 분류(예측) 하는것으로 입력 x를 통해 출력 y를 판단합니다. Y X 입력 데이터
  • 41. 3. 선형회귀모델 구현하기 그래프 생성하기 x 를 이용하여 y를 구하는 선형회귀모델 그래프를 구현합니다. **여기서 W와 X는 행렬이 아니므로 matmul이 아닌 기본 곱셈 연산자를 사용합니다.
  • 42. 3. 선형회귀모델 구현하기 비용 함수와 경사하강법을 이용한 최적화 함수 연산 그래프 생성 평균 제곱오차함수로 비용함수를 만들고, 경사하강법 최적화함수를 이용하여 비용함수가 최저가 되는 가중치와 편향값을 찾습니다(학습).
  • 43. 3. 선형회귀모델 구현하기 선형회귀모델 학습(그래프 실행)하기 세션 객체를 생성하여 100회 학습을 통해 선형회귀모델을 학습 합니다. 처음 비용함수의 값이 1.199859이었으나 학습후 0.000811까지 비용 함수의 값이 줄었습니다. . . . 비용함수 초기화 비용함수 계산(cost) 및 최적화(train_op) 수행 학습 횟수, 비용함수 결과 값, 가중치 값, 편향 값
  • 44. 3. 선형회귀모델 구현하기 학습된 모델로 데이터 분류하기 학습된 퍼셉트론인 hypothesi의 placeholder X의 값이 5와 2.5일때 출력 Y도 정확히 예측하였습니다.