Keras Functional API tutorial - pai-plznw4me/tensorflow_basic GitHub Wiki
keras κΈ°λ³Έ μ¬μ©λ²
kerasλ μλ 6κ°μ§ μμλλ‘ μμ± ν μ μλ€.
- input node μ€μ
- layer μ°κ²° λλ output μ€μ
- Model μμ± λ° μ€ν
- Compile (for deep learning)
- Training
- Evaluation
referece by tensorflow officaial tutorial : Keras > Functional API
μ κ³Όμ μ λ°λΌ Keras μ μ¬μ©νλλ° μμ΄ ν¬κ² 4κ°μ§λ‘ λΆλ₯ λλ€.
- single input, single output
- single input, Multi output
- Multi input, single output
- Multi input, Multi output
νμ§λ§ μ¬κΈ°μλ λνμ μΌλ‘ 2κ°μ§ κ³Όμ λ§ μ΄ν΄λ³Έλ€.
- single input, single output
- Multi input, Multi output
1. input node μ€μ (single input, multi input)
from tensorflow.keras.layers import Input
1.1 Single Input
x1 = Input(shape=[], name='x1')
1.2 Multi Input
x1 = Input(shape=[], name='x1')
x2 = Input(shape=[], name='x2')
1.3 Input Datatype
Input Datartype μΌλ‘λ tuple, list κ° κ°λ₯νλ€. γ
x1 = Input(shape=(256,), name='x1')
x1 = Input(shape=[256], name='x1')
2 . μ¬λ¬ layer μ°κ²° λλ μ°μ°
2.1 μ°μ°
y = x1 + x2
2.2 μ¬λ¬ Layer μ°κ²°
input_ = Input(shape=[784])
layer1 = Desne(units=256, activation='relu')(input_)
layer2 = Desne(units=256, activation='relu')(layer1)
layer3 = Desne(units=256, activation='relu')(layer2)
3 . Output
3.1 single output
input_ = Input(shape=[784])
layer1 = Desne(units=256, activation='relu')
layer2 = Desne(units=256, activation='relu')(layer1)
layer3 = Desne(units=256, activation='relu')(layer2)
output = layer3
3.2 multi output
input_ = Input(shape=[784])
layer1 = Desne(units=256, activation='relu')
layer2 = Desne(units=256, activation='relu')(layer1)
layer3 = Desne(units=256, activation='relu')(layer2)
output1 = layer2
output2 = layer3
Model μμ±
-
single input, single output
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense import tensorflow as tf input_ = Input(shape=[784], name='input_') layer1 = Dense(units=256, activation='relu')(input_) layer2 = Dense(units=256, activation='relu')(layer1) layer3 = Dense(units=10, activation='relu')(layer2) output = layer3 # model μμ± model = Model(input_, output) # model μ€ν x = tf.zeros(shape=[1, 784]) print(model(x)) print(model.predict(x))
-
multi input, multi output
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense import tensorflow as tf input_1 = Input(shape=[784], name='input_1') layer1 = Dense(units=10, activation='relu')(input_1) input_2 = Input(shape=[784], name='input_2') layer2 = Dense(units=10, activation='relu')(input_2) output = layer1 + layer2 inputs = {"input_1": input_1, "input_2": input_2} model = Model(inputs, output) # model μ€ν x = tf.zeros(shape=[1, 784]) print(model(x)) print(model.predict(x))
Model μ€ν
-
λͺ¨λΈ μ€ν λ°©λ²
__call__()
Model.predict()
-
multi input , single output
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
import tensorflow as tf
# multi input
input_1 = Input(shape=[784])
layer1 = Dense(units=10, activation='relu')(input_1)
input_2 = Input(shape=[784])
layer2 = Dense(units=10, activation='relu')(input_2)
# single output
output = layer1 + layer2
inputs = {"input_1": input_1, "input_2": input_2}
model = Model(inputs, output)
x = tf.zeros(shape=[1, 784])
input_values = {"input_1": x, "input_2": x}
# model μ€ν : __call__() => numpy
print(model.predict(input_values))
# model μ€ν : Model.predict() => tensor
print(model(input_values))
-
Multi input, multi output
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense import tensorflow as tf # multi input input_1 = Input(shape=[784]) output_1 = Dense(units=10, activation='relu', name='output_1')(input_1) input_2 = Input(shape=[784]) output_2 = Dense(units=10, activation='relu', name='output_2')(input_2) # single output inputs = {"input_1": input_1, "input_2": input_2} outputs = {"output_1": output_1, "output_2": output_2} model = Model(inputs, output) x = tf.zeros(shape=[1, 784]) input_values = {"input_1": x, "input_2": x} # model μ€ν : __call__() => numpy print(model.predict(input_values)) # model μ€ν : Model.predict() => tensor print(model(input_values))
Optional
model μ input μ λ ₯μ dictionary λ‘ μ λ ₯ κ°λ₯
output = layer1 + layer2
inputs = {"input_1": input_1, "input_2": input_2}
model = Model(inputs, output)
model μ input μ λ ₯μ list λ‘ μ λ ₯ κ°λ₯
output = layer1 + layer2
inputs = [input_1, input_2]
model = Model(inputs, output)