1. Tensors

  • Tensor(텐서)는 데이터의 n차원 배열을 말한다.

위의 그림과 같이 0차원부터 3차원까지 리스트를 이용해서 텐서를 구성할 수 있고,
n차원의 텐서 또한 위와 같이 텐서를 쌓음으로써(stack) 쉽게 구성할 수 있다.

저차원의 텐서를 쌓아 고차원의 텐서를 만들 수 있고, 반대로 고차원의 텐서에서 저차원의 텐서를 뽑아낼 수도 있다.
위의 예시에서 x는 (2,3)의 모양을 가진 2차원 텐서이다.
y는 x를 슬라이싱한 결과로 1차원 텐서가 되었다.

위의 예시처럼 텐서 안에 데이터를 가지고 있으면, 그것을 이용해 텐서를 변형(reshape)할 수 있다.
처음 예시는 (2,3)형태의 2차원 텐서를 (3,2)형태의 2차원 텐서로 변형한 것이고,
두 번째 예시는 첫번째 예시 결과에서 2번째 행만 불러오도록 슬라이싱되어 1차원 텐서가 되었다.

2. Variables

  • Variable(변수) : 프로그램이 실행될 때 값이 초기화되면서 계속 바뀌는 텐서를 말한다.
    변수는 신경망에서 bias 및 weight에 사용된다.

위의 예시 주요 설명

(1) 변수는 get_variable( )을 이용해서 생성한다.

  • tf.variable( )을 사용할 수도 있지만 tf.get_variable( )이 변수의 재사용 및 다양한 환경에 따라 만들기가 용이하기 때문
  • 예시에서는 변수는 weights란 이름을 가지고 있고, shape는 (1,2)
  • 이번 설명에서는 생략했지만 변수는 scope를 설정할 수 있다.
    (여기에서 변수를 재생성하지 않고, 재사용하는 것이 나옴)

(2) 변수를 만들 때 어떻게 초기화할지 설정해야 한다.

  • 신경망에서는 random normal 하게 초기화하는 것이 보통이다.

(3) 그래프를 형성했다면 변수를 다른 텐서처럼 사용해라.

(4) 세션에서는 모든 변수를 초기화 해라

  • global_variables_initializer() 를 호출 전의 그래프의 상태는 각 노드에 값이 아직 없는 상태를 의미
  • 따라서 해당 함수를 사용해주어야 Variable 의 값이 할당 되는 것이고 텐서의 그래프로써의 효력이 발생

(5) 모든 변수가 초기화 되고 나면, 원하는 어떤 텐서든 evaluate할 수 있다.

위의 예시에서는 train_loop를 상수인 텐서 x와 함께 불러왔다.
하지만 이게 현실적인가? 프로그램에 인풋값을 하드코딩하는가?
이 때 placeholder를 사용할 수 있다.

3. Placeholder

  • Placeholder : 텍스트 파일을 읽어들이는 것처럼 값을 그래프에 넣어주는 것

데이터를 입력받는 비어있는 변수라고 생각할 수 있다. 먼저 그래프를 구성하고, 그 그래프가 실행되는 시점에 입력 데이터를 넣어주는 데 사용한다.
(출처: https://excelsior-cjh.tistory.com/151)

tf.placeholder 함수는 입력으로 사용할 데이터의 타입만 지정해주고,
나중에 세션에서 실행될때 실제값은 딕셔너리 형태로 입력해준다.

'구글 머신러닝 스터디잼(중급) > Introduction to TensorFlow' 카테고리의 다른 글

Debugging TensorFlow Programs  (0) 2019.10.29
TensorFlow 실습 1  (0) 2019.10.28
Graph and Session  (0) 2019.10.25
TensorFlow API Hierarchy  (0) 2019.10.25
What is TensorFlow?  (0) 2019.10.25

+ Recent posts