Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

AI study/๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ

[keras] ์ผ์ • accuracy ๋‹ฌ์„ฑ ํ›„ ํ›ˆ๋ จ์„ ์ž๋™์œผ๋กœ ๋ฉˆ์ถ”๋Š” callbacks ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฐ์ž ๐Ÿฅ” 2021. 3. 4. 16:44
๋ฐ˜์‘ํ˜•

์‹œ์ž‘ํ•˜๋ฉฐ

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์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋งŒ๋“ค๋ฉด ๋˜๊ฒ ๋‹ค. ๋„ˆ๋ฌด ์‹ ๋‚œ๋‹ค!

๋ฐ˜์‘ํ˜•