Placeholder / Variable
- 텐서플로우를 공부하면서 Placeholder / Variable를 좀 더 명확하게 하고 싶어 공부하였다.
-
placeholder
- placeholder는 다른 텐서를 할당하기 위해 사용되는 변수 타입이다. 한마디로 함수에서 파라미터 같은 친구이다. 잘 와닿지 않을 수 도 있는데, 나한테는 가장 쉬운 예시였다.예를들어, 어떤 값에 3을 더한 값을 리턴하는 함수를 만든다고 생각해보자위 그림에서 빨간색으로 표신되어 입력을 받는, 즉 파라미터의 역할을 하는 노드가 바로 placeholder가 하는 역할이다.나머지 설계와 학습에 입력될 데이터를 placeholder로 구분하므로써 입력에 대한 출력을 확인하거나 코드 자체에서 입력 데이터를 명확하게 할 수 있다는 장점을 갖는다.tf.placeholder(dtype,shape=None,name=None) placeholder가 전달하는 파라미터는 위와 같은데 dtype은 저장되는 데이터의 타입을 결정하는 반드시 필요로하는 정보다. shape는 배열의 차원을 정의한다.result = sess.run(ret_val, feed_dict = {x_holder : val1, y_holder: val2, z_holder: val3}) 프로그램 실행 전에 위처럼 feed_dict로 비어있는 placeholder에 다른 변수나 값을 대입한다. -
Variable
- Variable은 다른 언어와 살짝 다른 변수이다. 이름 그대로 런타임 중 '변하는 수'이다. 학습을 위해 변하는 값을 선언할 때 사용하는 타입으로 역시 내가 편한 예시는 여러 좌표 데이터로 가장 합리적인 직선 y=Wx+b의 그래프를 그릴 때, 학습에 의해 결정되면서 그 값이 계속 변하는 W와 b와 같은 변수를 Variable로 선언한다.W = tf.Variable(tf.random_normal([1])) b = tf.Variable(tf.random_normal([1])) 위처럼 초기에 잘모르는 변수의 값을 랜덤으로 우선 대입하고 학습을 진행할 수 록 더 합리적인 값으로 변경된다.