์์ํ๋ฉฐ
epoch๋ฅผ ๋ช์ผ๋กํด์ผํ ์ง ๊ณ ๋ฏผํด์ผ๋ ๋๊ฐ ์์๋ค. ์ด๋ฒ TF ์๊ฒฉ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ callback ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ์ผ์ accuracy ๋ loss์ ๋๋ฌํ๋ฉด ๋ฉ์ถ๊ฒ ํด์ค ์ ์๋ค๊ณ ํ๊ธธ๋ ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค!
๋ง์ ํ๋ก์ ํธ๋ฅผ ์งํํด๋ณด์์ง๋ง, ์ด ๊ธฐ๋ฅ์ ๋ฃ์ด๋ณธ ๊ธฐ์ต์ด ์๋ค ใ
ใ
ใ
1. callback class ๊ตฌํ
class callback(tf.keras.callbacks.Callback):
def on_epoch_end(self, eopch, logs={}):
if(logs.get('loss') < 0.4) :
print("\n----reach 60% accuracy, stop training----")
self.model.stop_training = True
callbacks = callback()
loss๊ฐ 0.4 ๋ฏธ๋ง์ด ๋๋ ์๊ฐ epoch ์งํ์ ๋ฉ์ถ๊ฒ๋ callback ํด๋์ค๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
์ด์ ์ด ํด๋์ค๋ฅผ callbacks ๋ณ์์ ์ง์ ํด์ฃผ๊ณ , model.fit ํ ๋ epoch ๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
+) ๋ง์ฝ loss ๊ฐ ์๋ accuracy๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด๊ณ ์ถ๋ค๋ฉด, ์๋์ฒ๋ผ loss ๋์ acc ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
if(logs.get('acc') > 0.998) :
# accuracy๊ฐ 99.8% ์ด๋ฉด stop
ํน์, ์ด ์ํ๋ก ์งํํ๋ค๊ฐ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค๋ฉด??
TypeError: '>' not supported between instances of 'Nonetype' and 'float' |
'acc'์ 'accuracy'๋ก ๋ฐ๊ฟ์ ์คํํด๋ณด๋ฉด, ์คํ ๋ ๊ฒ์ด๋ค. ์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ใ ใ ๋ฒ์ ผ์ ์ฐจ์ด์ผ๊น?
2. callbacks ์ฌ์ฉ๋ฒ (model ์ฝ๋ ์์ )
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentrophy')
model.fit(train_x, train_y, epochs=100, callbacks = [callbacks])
์ด๋ ๊ฒ callbacks๋ฅผ ์ง์ ํด์ฃผ๋ฉด
์ด๋ ๊ฒ loss๊ฐ 0.4 ๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ๋ ์๊ฐ ๋์ด์ epoch๋ฅผ ์งํํ์ง ์๊ณ ๋ฉ์ถฐ์ฃผ๊ฒ ๋๋ค!
๋ง๋ฌด๋ฆฌ
์ด์ epoch ๋ฅผ ์ฌ๋ฌ๋ฒ ํด๋ณด๋ฉด์ ์๊ฐ๋ฒ๋ฆฌ์ง ์๊ณ ์ด๋ ๊ฒ ํด์ ์ํ๋ accuracy์ ๋๋ฌํ ์ ์๊ฒ๋ ๋ง๋ค๋ฉด ๋๊ฒ ๋ค. ๋๋ฌด ์ ๋๋ค!
'AI study > ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[keras] Conv2D, MaxPool2D ํ๋ผ๋ฏธํฐ ์ดํด๋ณด๊ธฐ (0) | 2021.04.20 |
---|---|
[keras] CNN ๋ชจ๋ธ - ImageDataGenerator ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2021.03.08 |
[keras] CNN ๋ชจ๋ธ ๊ตฌ์ฑ ์ดํด๋ณด๊ธฐ (0) | 2021.03.03 |
[tensorflow] ํ ์คํธ ๋ถ๋ฅ (Text Classification) - IMDB (0) | 2021.03.02 |
[tensorflow] imdb.load_data ์ค๋ฅ ํด๊ฒฐ - Object arrays cannot be loaded when allow_pickle=False (0) | 2021.03.02 |