NAN/머신 러닝

Placeholder

onddd 2021. 7. 8. 22:45
728x90

 

플레이스 홀더 Placeholder

 


 

Placeholder는 다른 텐서를 할당하기 위해 사용하는데, 실제로 값을 할당할 때는 피딩(Feeding)이라고 한다.

 

텐서 자체가 다차원 배열의 형태를 가지고 있기 때문에 플레이스 홀더 역시 배열이 들어 갈 수 있다는 특징이 있다.

 

이런 특징을 가지고 있어, 홀더는 학습 데이터를 포함한 변수이기도 하다.

 

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

mathe_score = [78,46,88,94,68]
english_score = [98,67,100,44,76]

a = tf.placeholder(dtype=tf.float32)
b = tf.placeholder(dtype=tf.float32)

c = (a+b)/2

sess = tf.Session()
sess.run(c,feed_dict= {a:mathe_score, b:english_score})

array([88. , 56.5, 94. , 69. , 72. ], dtype=float32)

 

위의 예시를 기준으로 가볍게 풀어 이야기 해보자 

 

변수 두 개에는 각각 리스트 타입으로 요소가 정렬되어있고

 

a, b에는 tf.placeholder(dtype = '')라는 텐서 객체가 담겨있는데, c에는 이 a, b를 더하고 나누라는 식이 할당되어있다.

 

기존과 마찬가지로 흐름을 중요시 하는 라이브러리이기에 Session()을 사용하여 텐서 객체를 사용할 준비를 끝냈다.

 

이때 sess.run( ) 에서 사용할 식 'c'를 먼저 지정하고

 

feed_dict = {비어있는 객체 a, b에 할당할 변수}에 math score와 english score를 담아주게 되면 정상적으로 코드가 실행된다.

 

 

 

핵심

 

  • Placeholder는 비어있는 상자로 탠서플로우에서 식을 활용 할 때 사용하게 된다.
  • 이때 sess.run(x, feed_dicr = {}에서 Placeholder 안에 무엇을 담을지 결정한다.

 

 

 

https://www.youtube.com/watch?v=4hnzae4vZPA&list=PLRx0vPvlEmdAbnmLH9yh03cw9UQU_o7PO&index=7 

youtube 동빈나님