[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 01. TensorFlow์ ๊ธฐ๋ณธ์ ์ธ operations
๋ชฉ์ฐจ
-
ํ ์ํ๋ก์ฐ(TensorFlow)?
-
๋ฐ์ดํฐ ํ๋ก์ฐ ๊ทธ๋ํ(Data Flow Graph)
-
-
ํ ์ํ๋ก์ฐ ์ค์น(Install TensorFlow)
-
๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด ์ฐ์ต
-
Ranks, Shapes, Types
ํ ์ํ๋ก์ฐ(TensorFlow)?
๊ตฌ๊ธ์์ ๋ง๋ ๋จธ์ ๋ฌ๋์ ์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
๋ฐ์ดํฐ ํ๋ก์ฐ ๊ทธ๋ํ(data flow graph)๋๊ฒ์ ์ฌ์ฉํด์ numerical ํ ๊ณ์ฐ์ ํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ , ๋ง์ ์ฌ๋๋ค์ด ์ ํธํ๋ Python์ด๋ผ๋ ์ธ์ด๋ฅผ ๊ฐ์ง๊ณ ํ ์ํ๋ก์ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ค.
์์ ๊ทธ๋ฆผ๋ง ๋ณด๋๋ผ๋ 2018๋ ๊ธฐ์ค์ด๊ธด ํ์ง๋ง ํ ์ํ๋ก์ฐ๊ฐ ์๋์ ์ผ๋ก 1์๋ฅผ ์ฐจ์งํ๊ณ ์์์ ์ ์ ์๋ค.
- ๋ฐ์ดํฐ ํ๋ก์ฐ ๊ทธ๋ํ(Data Flow Graph)
Node(๋ ธ๋)์ Edge(์ฃ์ง)๋ก ๊ตฌ์ฑ๋์ด์๋ ๊ฒ์ ์ฐ๋ฆฌ๋ Graph(๊ทธ๋ํ)๋ผ ํ๋ค.
Data Flow Graph์์๋ Node๋ฅผ ํ๋์ Operation์ด๋ผ ๋ถ๋ฅผ ์ ์๊ณ , Edge๋ Data(=Tensor)๋ผ ๋ถ๋ฅผ ์ ์๋ค.
์์ ๊ทธ๋ฆผ์์ ๋ณด๋ค์ํผ ๋๊ทธ๋ผ๋ฏธ a, b, c, d, e๋ Node, ์ฆ Operation์ ๋ํ๋ด๊ณ Edge๋ Data๋ฅผ ๋ํ๋ด์ด ์ํ๋ ๊ฒฐ๊ด๊ฐ์ ์ถ๋ ฅํ๊ณ ์๋ ๊ณผ์ ์ ๋ณผ ์ ์๋ค.
์ด๋ฌํ ๊ทธ๋ํ๋ฅผ Data Flow Graph๋ผ ํ๋ค.
ํ ์ํ๋ก์ฐ ์ค์น(Install TensorFlow)
๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด ์ฐ์ต
์์ ๋ค์ ์ถ์ฒ: https://github.com/hunkim/DeepLearningZeroToAll
ํ ์ํ๋ก์ฐ๋ ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ
์ฒซ ๋ฒ์งธ๋ก, operations๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ํ๋ฅผ ๋น๋ํ๋ค.
๋ ๋ฒ์งธ๋ก, ์ธ์ ์ ๋ง๋ค๊ณ run์ ํตํด ๊ทธ๋ํ๋ฅผ ์คํ์ํจ๋ค.
๋ง์ง๋ง์ผ๋ก, run์ผ๋ก ๊ทธ๋ํ๋ฅผ ์คํ์ํจ ๊ฐ์ ํ์ฉํ๋ค.
๋ผ๋ ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค.
- Hello Tensor Flow!
'Hello, Tensor Flow'๋ผ๋ Node๊ฐ ๋ง๋ค์ด์ง๊ณ ์ถ๋ ฅํ๋ ์์ ๋ค.
import tensorflow as tf
hello = tf.constant("Hello, TensorFlow!")
sess = tf.Session()
print(sess.run(hello))
b'Hello, TensorFlow!'
- Computational Graph
import tensorflow as tf
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0)
node3 = tf.add(node1, node2)
print("node1:", node1, "node2", node2)
print("node3:", node3)
sess = tf.Session()
print("sess.run(node1, node2): ", sess.run([node1, node2]))
print("sess.run(node3): ", sess.run(node3))
node1: Tensor("Const:0", shape=(), dtype=float32) node2 Tensor("Const_1:0", shape=(), dtype=float32)
node3: Tensor("Add:0", shape=(), dtype=float32)
sess.run(node1, node2): [3.0, 4.0]
sess.run(node3): 7.0
node๋ฅผ ๋ง๋ค์ด์ ์ถ๋ ฅํ๋ฉด node์ ๋ํ ์ ๋ณด๋ค์ด ์ถ๋ ฅ๋๊ณ ,
์ธ์ ์ ๋ง๋ค์ด์ run์ ์์ผ์ผ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
- Placeholder
์์ ์์ ๋ค์ node๋ค์ ์์๋ก ๋ง๋ค์๋๋ฐ ์ด๋ฒ์๋ ์์๊ฐ ์๋, ์คํ์ํค๋ ๋จ๊ณ์์ ๊ฐ์ ๋์ ธ์ฃผ๋ ์์ ๋ค.
์ด๋ Placeholder๋ผ๋ ํน๋ณํ node๋ก ๋ง๋ค์ด์ค์ผ ํ๋ค.
import tensorflow as tf
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b # tf.add(a, b)์ ๊ฐ์ ์๋ฏธ
sess = tf.Session()
print(sess.run(adder_node, feed_dict={a:3, b:4.5}))
print(sess.run(adder_node, feed_dict={a: [1,3], b: [2,4]}))
7.5
[3. 7.]
์ ๋ ฅ ๊ฐ์ผ๋ก [1, 3], [2, 4]์ ๊ฐ์ด ๊ฐ์ด ํ๋๊ฐ ์๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ๋ ฅ ๊ฐ์ผ๋ก ๋ฃ์ ์ ์๋ค.
Ranks, Shapes, Types
- Rank
Rank | Math entity | Python example |
0 | Scalar (magnitude only) | s = 483 |
1 | Vector (magnitude and direction) | v = [1.1, 2.2, 3.3] |
2 | Matrix (table of numbers) | m = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] |
3 | 3-Tensor (cube of numbers) | t = [ [ [2], [4], [6] ], [ [8], [10], [12] ], [ [14], [16], [18] ] ] |
n | n-Tensor (you get the idea) | .... |
Rank๋ ์ฝ๊ฒ ๋งํด์ ๋ช ์ฐจ์ Array๋๋ฅผ ๋ปํ๋ค.
- Shape
Rank | Shape | Dimension number | Example |
0 | [] | 0-D | A 0-D tensor. A scalar. |
1 | [D0] | 1-D | A 1-D tensor with shape [5]. |
2 | [D0, D1] | 2-D | A 2-D tensor with shape [3, 4]. |
3 | [D0, D1, D2] | 3-D | A 3-D tensor with shape [1, 4, 3]. |
n | [D0, D1, ... Dn-1] | n-D | A tensor with shape [D0, D1, ... Dn-1]. |
Shape๋ ๊ฐ ์ฐจ์์์์ Element์ ์ซ์๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
t = [ [1, 2, 3], [4, 5, 6] ]
์๋ฅผ ๋ค์ด, ์์ t๋ 2์ฐจ์ ๋ฐฐ์ด์ ์์๋ฅผ 4, 5, 6 -> 3๊ฐ, [1,2,3], [4,5,6] -> 2๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก
[2, 3]๋ผ๊ณ Shape๋ฅผ ํ๊ธฐํ ์ ์๋ค.
- Types
Type๋ ๋ง ๊ทธ๋๋ก ๋ฐ์ดํฐ์ ํ์ ์ ๋ํ๋ธ๋ค.
Data type | Python type |
DT_FLOAT | tf.float32 |
DT_DOUBLE | tf.float64 |
DT_INT8 | tf.int8 |
DT_INT16 | tf.int16 |
DT_INT32 | tf.int32 |
... | ... |
์ฐธ๊ณ
Sung Kim๋ - ML lab 01. TensorFlow์ ์ค์น ๋ฐ ๊ธฐ๋ณธ์ ์ธ operations
https://www.youtube.com/watch?v=-57Ne86Ia8w
'Development > Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 02. TensorFlow๋ก Linear regression ๊ตฌํ
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 02. TensorFlow๋ก Linear regression ๊ตฌํ
2019.07.04 -
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 02. Linear Regression์ Hypothesis์ Cost
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 02. Linear Regression์ Hypothesis์ Cost
2019.07.04 -
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 01. Machine Learning ์ฉ์ด์ ๊ฐ๋ ์ค๋ช
[๋จธ์ ๋ฌ๋ ์ ๋ฌธ] 01. Machine Learning ์ฉ์ด์ ๊ฐ๋ ์ค๋ช
2019.07.01 -
[๋จธ์ ๋ฌ๋] ํ์ด์ฌ(Python), ํ ์ํ๋ก์ฐ(Tensor Flow) ์ค์น
[๋จธ์ ๋ฌ๋] ํ์ด์ฌ(Python), ํ ์ํ๋ก์ฐ(Tensor Flow) ์ค์น
2019.06.28