6. 플레이스홀더(placeholder), Feeding

다른 텐서를 할당하기 위해 사용한다. 
위 말의 의미가 이해하기 어려울 수도 있다.

쉽게 말해서, 입력값(X)을 넣어놓을 빈 통이라고 생각 하면 된다.   
"플레이스 홀더(빈 통)에 입력값을 넣어주는 과정"을 피딩(Feeding)이라고 한다.

※세션을 작동시킬 때(sess.run(y, feed_dict={W: , b: })),의 형태로 모든 placeholder값을 feed_dict에 넣어주어야 한다.

 

왜 굳이 입력값을 플레이스 홀더라는 곳에 입력값을 넣어야 되는가?

에 대해서 내가 생각해본 결과 

입력값은 여러 데이터들(수치가 정해진) 값을 포함한 형태이다.

상수는 변하지 않는 수이고 값이 1개가 들어가는 경우가 통상적이다.
따라서 상수로 입력값을 받는것에는 무리가 있다고 생각을 했다.

변수는 더 알맞은 함수로 찾아가기 위해서 값이 계속 변화한다 
하지만, 입력값은 수치가 정해져있고, 그 값이 도중에 바뀌거나 해서는 안된다.

따라서, 입력값을 넣을 아예 다른 형태(placeholder)가 필요했던 것 같다.  

 

왜 변수를 초기화 해야 하는가?

간단한 상수들로 이루어진 식에 대해서는 오류가 나지 않는다.
하지만 단순계산을 하기 위해서 텐서플로우를 이용하는 것은 아니다.
궁극적으로 변수를 구하기 위해서 텐서플로우를 이용하는 것이 아닌가?

그 말은,  텐서플로우를 이용한 프로그램에서는 변수가 들어가야 된다는 것인데, 
지금까지의 지식을 갖고 변수를 넣어 계산을 하게 되면 오류가 난다. 

앞의 글에서 했던 말(device(CPUs, GPUs)를 C, C++로 이해를 하면 편하다.)
을 다시 한번 생각을 해보자.

C, C++에서 프로그램을 돌리게 되면, 
변수들을 먼저 선언을 해주고 시작을 했었다.
여기에서도 마찬가지라고 보면 된다. 조금 더 간편해진 것은 변수 각각을 선언을 해줄 필요 없이 단순하게,
 init = tf.global_variables_initializer()
 sess.run(init)
을 통해서 모든 변수를 선언을 해줄수 있다. 

 

 

참고 자료:
https://m.blog.naver.com/PostView.nhn?blogId=ndb796&logNo=221277981625&proxyReferer=https%3A%2F%2Fwww.google.com%2F
안경잡이 개발자
https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/get_started/basic_usage.html
텐서플로우 문서 한글 번역본  - 기본적인 사용방법
https://excelsior-cjh.tistory.com/151
러닝텐서플로(연산그래프) (이미지 참조)
https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/api_docs/python/client.html
텐서플로우 문서 한글 번역본  - 그래프 실행

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기