일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Object Detection
- 고급C
- tensorflow
- 라즈베리파이
- Raspberry
- sw
- tracking
- 디버그모드
- 머신러닝
- IMAGE
- php
- Machine Learning
- C언어
- 정리
- RapidCheck
- 안드로이드
- 가상환경
- MySQL
- Linux
- 영상분석
- 데이터
- FLASK
- detection
- Android
- keras
- Python
- 서버
- Deep Learning
- 지능형
- Video
- Today
- Total
건프의 소소한 개발이야기
[Python - Tensorflow] Tensorflow 시작하기(1) 본문
안녕하세요, 건프입니다.
이번엔 Python 기반의 Machine Learning 언어 및 플랫폼인 "Tensorflow" 를 사용해봅니다.
1 2 3 4 5 6 7 8 9 | import tensorflow as tf import numpy as np a = tf.constant([ 1 , 2 , 3 ]) b = tf.constant([[ 10 , 20 , 30 ], [ 100 , 200 , 300 ]]) c = tf.add(a,b) with tf.Session() as sess: print sess.run(c) |
우선 상수 tensor a와 b를 생성합니다
이후, a 와 b를 더하는 tensor 인 c 를 생성합니다.
그리고 Session 을 열고 c를 run 합니다.
그 결과를 print 하면 다음과 같은 결과가 나타납니다.
a는 벡터이고
b는 행렬인데, 더하기 연산을 진행하니, 각각의 row 에 더해지는 연산을 하는 것을 알 수 있습니다.
만약 Session 을 열고 run 하지 않고
그대로 c를 프린트 한다면
import tensorflow as tf
import numpy as np
a = tf.constant([1,2,3])
b = tf.constant([[10, 20, 30], [100, 200, 300]])
c = tf.add(a,b)
#with tf.Session() as sess: 주석입니다
print c
얘는 Tensor 인데, 위와 같은 Attribute 를 가지고 있다는 것만 알려주네요.
1 2 3 4 5 6 7 8 9 | t = tf.zeros([ 3 ,]) with tf.Session() as sess: print sess.run(t) t1 = tf.random_uniform([ 1 ], - 1 , 1 ) t2 = tf.random_uniform([ 2 , 2 ], 0 , 1 ) with tf.Session() as sess: print sess.run(t1) print sess.run(t2) |
zero 매트릭스를 만드는 방법과 (one line 만 명시하면 결과로 보는 것과 같이 벡터로 만들어 집니다.)
크기에 따른 랜덤 매트릭스를 만드는 방법이다.
첫번째 인자 : 만들 매트릭스 크기 지정
두번째 인자 : 범위 시작 값
세번째 인자 : 범위 끝 값
자 그렇다면 행렬간 곱하기를 진행해봅니다.
1행 2열 짜리 Matrix 와 2행 1열 짜리 Matrix 를 만들어서 곱한 결과를 출력하려고 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import tensorflow as tf import numpy as np mat1 = tf.constant([[ 2 , 3 ]]) mat2 = tf.constant([[ 2 ], [ 5 ]]) product = tf.matmul(mat1, mat2) cons = tf.constant( 1 ) with tf.Session() as sess: print mat1 print mat1. eval () print sess.run(mat1) print sess.run(product) print product print cons |
위와 같이 뽑았을때 결과는 다음과 같습니다.
마지막에 일반 상수를 뽑아본 이유는
Matrix * Matrix 가 [[19]] 이런식으로 출력이 되는데, 이것이 스칼라인지 벡터인지 메트릭스 인지 확인하고 싶었기 때문입니다.
일반적으로 스칼라가 되어야 생각을 하는데,
직접 뽑아보니까 스칼라가 아니라 1 by 1 벡터가 나오네요.
그럼 tensorflow 에서 변수를 선언해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #-*- coding: utf-8 -*- import tensorflow as tf import numpy as np state1 = tf.Variable( 0 , name = "counter" ) init_op = tf.initialize_all_variables() with tf.Session() as sess: print "sess.run(init_op): " , sess.run(init_op) print "sess.run(state1): " , sess.run(state1) print "state1.assign(2):" , state1.assign( 2 ) print "sess.run(state1): " , sess.run(state1) """ 여기서 변수값이 2이 아니라 그전 변수값인 0이 나온 이유는 state1.assign(2) 자체는 tensor 를 생성하는 행위이고 따라서 변수값 변경이 적용되도록 만드려면, 다음과 같이 작업해주어야 합니다. """ assign_op = state1.assign( 2 ) print "sess.run(assign_op): " , sess.run(assign_op) print "sess.run(state1): " , sess.run(state1). |
이것으로 tensor 의 존재감과 구조를 명백하게 확인할 수 있습니다.
tensor 는 만들기만 해서는 적용되지 않습니다.
Session 으로 실제로 실행시켜주어야 그 의미를 같습니다.
다음 포스팅에서 이어서 진행할께요~
도움이 되었길 바랍니다.
고맙습니다 :)
' 개발 이야기 > Machine Learning 이야기' 카테고리의 다른 글
[Jupyter - Notebook] ipynb 파일을 python 파일로 변환하기 (4) | 2016.07.27 |
---|---|
[Python - Tensorflow] Tensorflow 시작하기 (2) (2) | 2016.06.06 |
[ML - Matlab/Octave] Logistic Regression (5) | 2016.04.27 |
[ML - Matlab/Octave] Linear Regression with Multiple Variables (1) | 2016.04.23 |
[ML - Matlab/Octave] Linear Regression with Single Variable (0) | 2016.04.17 |