출처 : https://www.tensorflow.org/get_started/mnist/beginners
이글은 영어 원본을 읽고 공부하면서 불필요한 내용 빼고 이해하기 쉽도록 적절히 내맘대로 작성해보았습니다. 이해가 잘못되어 원저자의 의도대로 번역이 안되어 있을 수도 있습니다. 이점 참고해서 읽어 주시면 고맙겠습니다
앞서 작성한 글
텐서플로 시작하기 (Getting Started With TensorFlow)(2)
텐서플로 시작하기 (Getting Started With TensorFlow)(3) tf.train tf.estimator API
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(1)텐서플로 시작하기 (Getting Started With TensorFlow)(3) tf.train tf.estimator API
ML 초보자를 위한 MNIST(MNIST For ML Beginners)(2)
이 글은 앞서 작성한 글에 이어지는 글입니다.
회귀 분석의 구현
파이썬에서 효율적으로 수치적인 처리를 하려면 NumPy 같은 라이브러리를 사용하게됩니다. NumPy는 행열 계산을 효과적으로 할 수 있지만 python으로 돌아오는데 많은 오버헤드가 있습니다.TensorFlow 에서도 행열 연산을 외부에서 처리하는데, 그러나 이 오버헤드를 줄이기 위한 처리가 되어있습니다.
TensorFlow를 사용하기위해서 우리는 임포트 해야합니다. 아래 참고
import tensorflow as tf
x = tf.placeholder(tf.float32, [None, 784])
x는 runtime 중에 외부에서 데이터를 변경하기 위해서 사용할것이라 placeholder로 만들었습니다. placeholder설명은 아래 링크를 참고 바랍니다.
https://www.tensorflow.org/versions/r0.12/api_docs/python/io_ops/placeholders
placeholder는 인자는 아래와 같습니다.
tf.placeholder(dtype, shape=None, name=None)
https://swlock.blogspot.com/2017/11/getting-started-with-tensorflow2.html
우리는 많은 MNIST 이미지를 입력 할 수 있기를 원합니다. 각각의 이미지는 784개의 실수 벡터입니다. 2차원 텐서의 부동 소수점 숫자로 표현하고 [None, 784] 모양을 사용합니다. 여기서 None은 어떤 크기가 가능하다는 뜻입니다. 학습 과정에 사용될 이미지의 총 갯수가 될 됩니다.
우리는 또한 모델을 위해 가중치와 바이어스를 필요로 합니다. tf.Variable 함수를 사용하여 생성하였습니다. 기계 학습 어플리케이션의 경우 일반적으로 모델 매개 변수가 Variables입니다.
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
여기에서 모두 0으로 이루어진 상수 텐서로 초기값을 넣었습니다. W, b 은 학습해서 값이 들어가기 때문에 초기값이 어떤 값이던 관계는 없습니다.W는 10개 숫자 클래스에 대해 이미지 벡터 784개 픽셀과 곱셈을 하기 위한 크기를 가지고 있으며 ([784, 10] 구조를 가짐) , b가 더해진 후에 evidence를 구성할 텐서가 만들어 집니다. (b는 [10] 구조를 가짐)
이제 모델을 아래와 같이 구현할 수 있습니다.
y = tf.nn.softmax(tf.matmul(x, W) + b)
먼저 x에 W를 곱해서 tf.matmul (x, W)라는 표현식을 만든다.https://www.tensorflow.org/api_docs/python/tf/matmul
이것은 방정식에서 Wx가있는 방정식을 곱했을 때 뒤집 힙니다. 이건 제가 볼때 아마도 행열의 곱셈과 관계가 있습니다, W[784,10] 구조에 x[None,784]를 곱하면 안되기 때문에 x[None,784] * W[784,10] 이런식으로 곱해주어야 합니다.
그런 다음 b를 추가하고 마지막으로 tf.nn.softmax를 적용합니다.
몇 줄의 짧은 설정만으로도 모델을 정의하는 데 한 줄이 걸렸습니다. 이는 TensorFlow가 softmax 회귀를 쉽게 만들 수 있도록 설계 되었기 때문이 아닙니다. 기계 학습 모델에서 물리 시뮬레이션에 이르기까지 다양한 종류의 수치 계산을 설명하는 매우 유연한 방법입니다. 한 번 정의 된 모델은 컴퓨터의 CPU, GPU, 심지어 휴대폰까지 다른 장치에서 실행할 수 있습니다!
댓글 없음:
댓글 쓰기