๐ ํ์ํด๋์ค(Subclassing) API๋ก ๋์ ๋ชจ๋ธ ๋ง๋ค๊ธฐ
๋ฐ๋ณต๋ฌธ์ ํฌํจํ๊ณ ๋ค์ํ ํฌ๊ธฐ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ฉฐ ์กฐ๊ฑด๋ฌธ์ ๊ฐ์ง๋ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๋์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์๋ก ํ๋ ๊ฒฝ์ฐ ๋ช ๋ นํ ํ๋ก๊ทธ๋จ์ด ์คํ์ผ์ธ ์๋ธํด๋์ฑ API๋ฅผ ํตํด ๋ชจ๋ธ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๊ตฌ์ฑ
Model ํด๋์ค ์์
- ์ด๊ธฐ ์ค์ ๋ฉ์๋ __init__()์ ์ด์ฉํ์ฌ ์๋์ธต๊ณผ ์ถ๋ ฅ์ธต์ ์ค์ ํฉ๋๋ค.
- call()๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ธต์ ๋์ ์ผ๋ก ๊ตฌ์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋จ์
ํ์ง๋ง ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ call()๋ฉ์๋ ์์ ์จ๊ฒจ์ ธ ์์ด์ ์ผ๋ผ์ค๊ฐ ๋ถ์ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ฆ, ๋ชจ๋ธ ์ ์ฅ ๋ฐ ๋ณต์ฌ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ํ summary() ๋ฉ์๋ ํ์ฉ์ด ์ ํ๋ฉ๋๋ค.
์ธต์ ๋ชฉ๋ก๋ง ํ์ธ์ด ๊ฐ๋ฅํ๋ฉฐ ์ธต๊ฐ์ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ ์ ์์ต๋๋ค.
์ผ๋ผ์ค๊ฐ ํ์ ๊ณผ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์์ ์ฝ๋
# WideAndDeepModel ํด๋์ค
class WideAndDeepModel(keras.models.Model):
def __init__(self, units=30, activation="relu", **kwargs):
super().__init__(**kwargs)
self.hidden1 = keras.layers.Dense(units, activation=activation)
self.hidden2 = keras.layers.Dense(units, activation=activation)
self.main_output = keras.layers.Dense(1)
self.aux_output = keras.layers.Dense(1)
def call(self, inputs):
input_A, input_B = inputs
hidden1 = self.hidden1(input_B)
hidden2 = self.hidden2(hidden1)
concat = keras.layers.concatenate([input_A, hidden2])
main_output = self.main_output(concat)
aux_output = self.aux_output(hidden2)
return main_output, aux_output
model = WideAndDeepModel(30, activation="relu")
'AI > Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] ํธ์ฆ์จ ๋จธ์ ๋ฌ๋ - 10์ฅ(ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋) (0) | 2023.01.06 |
---|---|
[ML] ํธ์ฆ์จ ๋จธ์ ๋ฌ๋ - 10์ฅ(๋ค์ํ ๋ชจ๋ธ ๋ง๋ค๊ธฐ) (0) | 2023.01.03 |
[ML] Neural Network(6) - ์ญ์ ํ(Backpropagation)(2) (0) | 2022.12.06 |
[ML] Neural Network(5) - ์ญ์ ํ(Backpropagation)(1) (0) | 2022.12.06 |
[ML] Neural Network(4) - ์์ ํ(Feedforward Process) (0) | 2022.12.01 |