Tensorflow: tf.argmax๋Š” ์—ญ์ „ํŒŒ๋ฅผ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 04์›” 30์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: tensorflow/tensorflow

์•ˆ๋…•ํ•˜์„ธ์š”, ํ…์„œํ”Œ๋กœ

์ตœ๊ทผ์—๋Š” argmax ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ tf.stop_gradient๋ฅผ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ stop_gradient๋ฅผ ์ œ๊ฑฐํ•ด๋„ tensorflow๋Š” ์—ฌ์ „ํžˆ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ argmax ๋Š” ๋ฏธ๋ถ„ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐฑํ”„๋กญ์„ ์ œ๊ฑฐํ•ด๋„ ๋ฐฑํ”„๋กญ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? stop_gradient ์—†์ด argmax๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?

argmax๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๋ฆฌ์†Œ์Šค์— ํฌ๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค TF!

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Gradient๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์—์„œ ์ •์˜๋˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ TensorFlow์—์„œ ์ด ์ž‘์—…์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

x = tf.Variable([1., 1])
z = tf.argmax(x, 0)
sess = create_session()
xgrad = tf.gradients(z, x)
sess.run(tf.initialize_all_variables())
sess.run(xgrad)

LookupError: No gradient defined for operation 'ArgMax' (op type: ArgMax)

>๋ชจ๋“  ๋Œ“๊ธ€

Gradient๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์—์„œ ์ •์˜๋˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ TensorFlow์—์„œ ์ด ์ž‘์—…์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

x = tf.Variable([1., 1])
z = tf.argmax(x, 0)
sess = create_session()
xgrad = tf.gradients(z, x)
sess.run(tf.initialize_all_variables())
sess.run(xgrad)

LookupError: No gradient defined for operation 'ArgMax' (op type: ArgMax)
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰