High level api Vs Low level api - pai-plznw4me/tensorflow_basic GitHub Wiki
Tensorflow Modeling
1. κ°μ
Tensorflow λ μ°λ¦¬κ° μ€κ³ν μκ³ λ¦¬μ¦μ μ½κ² ꡬννκ² ν΄μ€μ μκ² λμμ£Όλ λ₯λ¬λ νλ μ μν¬μ
λλ€.
μ΄λ² μκ°μλ Tensorflow μ νμ©ν΄ μ΄λ»κ² λͺ¨λΈμ ꡬνν μ μλμ§ μ΄ν΄ λ³΄κ² μ΅λλ€.
ν΄λΉ Postλ Tensorflow μ νμ©ν΄ ML λͺ¨λΈμ λ§λλ λνμ μΈ 2κ°μ§ λ°©λ²μ μ€λͺ
ν©λλ€.
- Tensorflow low level api
- Tensorflow high level api(Keras)
β MNIST Datasetμ Deep Neural Network μ ν΅ν΄ λΆλ₯νλ μμ λ‘ μ κ°λ
λ€μ μ€λͺ
ν©λλ€.
λ§μ½ MNIST μ λν κ°λ
μ΄ λΆμ‘±νλ€λ©΄ DNN ννΈλ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
2. High level api Vs Low level api
2.1 High level api
Tensorflowλ μ μ κ° λ₯λ¬λ λλ λ¨Έμ λ¬λμ λ³΄λ€ μ½κ² ꡬνν μ μλλ‘ APIλ₯Ό μ 곡ν©λλ€.
μ΄λ° API μ High Level API
λΌκ³ ν©λλ€.
λνμ μΈ Tensorflow μ High level api
μΈ Keras
μ μ¬μ©ν΄ Fully Connected Layer
μ ν μΈ΅ ꡬνν΄ λ³΄λλ‘ νκ² μ΅λλ€.
Fully Connected Layer
λ ν¬κ² 2κ°μ§ λ¨κ³λ₯Ό κ±°μΉ©λλ€.
- Step 1. μ λ ₯κ°(X) κ³Ό κ°μ€μΉ(W)μ λ΄μ (Inner Product)ν©λλ€.
- Step 2. νμ±ν ν¨μ(Activation function)μ Step1 μ κ²°κ³Όμ μ μ©ν©λλ€.
a = Dense(units=64, activation='relu')(X)
High level api λ μ½κ² μ½λλ₯Ό ꡬνν μ μλ μ₯μ μ΄ μμ§λ§ λ°λλ‘ λ΄λΆμμ μ΄λ€ μ°μ°λ€μ΄ μ§νλλμ§ μ½κ² μκΈ° μ΄λ €μ΄ λ¨μ μ΄ μμ΅λλ€.
(λ¬Όλ‘ High level api μ μ μ(declaration) μ μ΄ν΄ λ΄ ν¨μ λ΄λΆμ μλ μ리λ₯Ό μμ μμ΅λλ€.)
λ λ€λ₯Έ λ¨μ μΌλ‘λ μκ³ λ¦¬μ¦μ λ΄λΆ μλ λ°©μμ λ€λ₯΄κ² λ°κΏμ μλ μν€κ³ μΆμ λ
High level api κ° λ°λ κΈ°λ₯μ μ 곡 νκ³ μλλ€λ©΄ high level api μμ ꡬν ν μ μλ λ¨μ μ΄ μμ΅λλ€.
2.2 Low level api
High level api μ λ¨μ μ 극볡νκ³ μ Low level api μ μκ³ μλ κ²μ μ€μν©λλ€.
μ Fully Connected Layer
μ Tensorflow
μ Low level api λ‘ κ΅¬νν΄ λ³΄λλ‘ νκ² μ΅λλ€.
# Weightλ₯Ό μμ±ν©λλ€.
init_w = tf.random.normal(mean=0.0, stddev=1.0, shape=(784, 64))
w = tf.Variable(init_w)
# Biasμ μμ±ν©λλ€.
init_b = tf.zeros((64))
b = tf.Variable(init_b)
# Inner product μ μνν©λλ€.
z = tf.matmul(X, w)
# Activation Function μΈ Reluμ μ μ©ν©λλ€.
a = tf.relu(z)
μ½λμ μ€μκ° High level api μ μ¬μ©ν κ²λ³΄λ€ νμ€ν λ§μ΄ λμ΄λ κ²λ€μ νμΈν μ μμ΅λλ€.
νμ§λ§ μ€μκ° λμ΄λ λ§νΌ μκ³ λ¦¬μ¦μ μνν΄μΌ νλ κ° λ¨κ³λ₯Ό λ³΄λ€ λͺ
νν μ΄ν΄ ν μ μμ΅λλ€.
κ°λ Ή High level api μμ μμ μμλ weightμ μ΄κΈ°κ°(initial value) κ° νκ· 0, λΆμ° 1 μΈ μ κ· λΆν¬
λ‘ λμ΄ μλ€λκ±Έ μ½λλ‘ μ μ μκ³
bias μ μ΄κΈ°κ°μ΄ 0.0 μΌλ‘ λμ΄ μλ€λ κ²μ μ μ μμ΅λλ€.
init_w = tf.random.normal(mean=0.0, stddev=1.0, shape=(784, 64))
init_b = tf.zeros((64))
Sum-up
- high level api λ‘ μμ±ν΄μ λ¬Έμ κ° μκΈΈ μ΄μκ° μλ€λ©΄ κ°λ₯νλ©΄ high level api λ‘ λ¨Όμ νλ‘κ·Έλ¨μ μμ± νλ κ²μ΄ λ°λμ§νλ€.
- λͺ¨λκ° μκ³ μλ λ³μλͺ , ν¨μλͺ λ±μ ν΅ν΄ νμ νκΈ°κ° λ§€μ° μμν΄μ§λ€.
- μ΄λ―Έ κ²μ¦λ μ½λμμΌλ‘ μ μ§ λ³΄μκ° μμν΄μ§λ€.
- μ½λλ₯Ό μμ±νλλ° μκ°μ΄ μ κ² κ±Έλ¦°λ€.
- λ§μ½ High level apiλ‘ μμ±μ λ¬Έμ κ° μκ²ΌμΌλ©΄ λ¬Έμ κ° μκΈ΄ λΆλΆμ low level api λ‘ λ³κ²½νλ€.
- example) serving μ΄λ λ°°ν¬ νκ²½μμ high Level API κ° μλνμ§ μμλκ° μλ€.
μ΄λλHigh level api
μLow level api
λ‘ λ³κ²½ ν μ μμ΄μΌ νλ€.