갈루아의 반서재

MNIST For ML Beginners (2) - Implementing the Regression



텐서플로우를 사용하기 위해 먼저 임포트한다.

1
import tensorflow as tf
cs


아래와 같이 변수를 생성하자.

1
= tf.placeholder(tf.float32, [None, 784])
cs

여기서 x  는 특정 값이 아니다. x placeholder라는 것으로 텐서플로우로 하여금 연산을 하도록 요청할 때 우리가 입력하게 되는 값이다. MNIST 이미지의 어떤 수라도 입력할 수 있도록 우리는 이것을 [None, 784] 형태를 가진 부동소수점수의 2-D 텐서로 표현할 것이다(여기서 None 이 의미하는 것은 어떤 값이라도 될 수 있다는 것이다).

그리고 가중치와 편향 역시 필요하다. 이 요소들을 추가적인 인풋으로 다룰 수 있지만, 텐서플로우는 이 보다 더 나은 방법을 가지고 있다. 바로 Variable이 그것으로, Variable 는 일종의 수정가능한 텐서다. 연산에 사용이 가능하고 수정도 가능하다.


Variable 초기값인
tf.Variable 통해서 Variable 을 생성할 수 있다. 여기서는 우리는 Wb 를 0 으로 꽉찬 텐서로 초기화했다. W는 [784, 10] 의 구조를 가졌음을 알 수 있다. 784 차원의 이미지 벡터에 가중치를 곱해서10-차원 벡터 결과를 도출해내야하기 때문이다. 그리고 b는 [10] 의 구조를 가졌고, 아웃풋에 그 값을 더할 수 있다.

1
2
= tf.Variable(tf.zeros([78410]))
= tf.Variable(tf.zeros([10]))
cs


아래의 라인을 추가해서 모델을 만들어보자.

1
= tf.nn.softmax(tf.matmul(x, W) + b )
cs

tf.matmul(x, W)을 통해 먼저 xW 를 곱했다. 그리고 b를 더한 후 tf.nn.softmax 를 적용했다.