Databricks의 TensorFlow™
자리 표시자(Placeholder)
지금까지는 변수
를 사용해 데이터를 관리했지만, 그 외에도 기본 구조로 자리 표시자
가 있습니다. 자리 표시자
는 나중에 데이터를 할당할 변수로, 자리 표시자를 사용하면 데이터 없이도 연산을 생성하고 연산 그래프를 만들 수 있습니다. TensorFlow
용어에서는 이러한 자리 표시자를 통해 그래프를 데이터에 공급합니다.
이 예시는 앞의 예시들과 약간 다르게 작동하므로, 자세히 살펴보겠습니다.
먼저, 평소처럼 tensorflow
를 가져옵니다. 그런 다음 나중에 값을 저장할 메모리 공간인 x
라는 자리 표시자
를 만듭니다.
그런 다음 x
에 2를 곱하는 연산인 텐서를 만듭니다. 참고로, 아직 x
의 초기 값을 정의하지 않았습니다.
이제 연산(y
)을 정의했으므로, 세션에서 이 연산을 실행할 수 있습니다. 세션 개체를 만든 다음 y
변수를 실행하면 됩니다. 즉, 훨씬 더 큰 연산 그래프를 정의했다면 그래프의 일부만 실행할 수 있습니다. 이 하위 그래프 평가는 실제로 TensorFlow 의 차별화 요소이며, 유사한 연산을 수행하는 다른 많은 라이브러리에는 존재하지 않습니다.
y
를 실행하려면 x
값에 대한 정보가 필요합니다. 실행
할 feed_dict
인수 내부에서 이 값을 정의합니다. 여기서는 x
의 값을 [1, 2, 3]
이라고 하겠습니다. y
를 실행하면 [2, 4, 6]
라는 결과가 반환됩니다.
자리 표시자의 크기를 정적으로 조정할 필요는 없습니다. x가 임의의 길이를 가질 수 있도록 프로그램을 업데이트해 보겠습니다. x
의 정의를 다음과 같이 변경합니다.
이제 feed_dict
에서 x
값을 정의하면 값을 개수에 제한 없이 가질 수 있습니다. 아직 코드가 작동하고 동일한 답을 반환해야 하지만, 이제 feed_dict
의 값에 관계없이 작동하게 됩니다.
자리 표시자는 배열을 저장할 수 있도록 여러 차원을 가질 수도 있습니다. 다음 예시에서는 3x2 행렬을 만들고 여기에 몇 개의 숫자를 저장합니다. 그런 다음 이전과 동일한 연산을 사용하여 요소별로 숫자를 두 배로 늘립니다.
자리 표시자의 첫 번째 차원은 None
으로, 행을 개수에 제한 없이 가질 수 있음을 의미합니다. 두 번째 차원은 3으로 고정되어 있습니다. 즉, 각 행에 3개의 데이터 열이 있어야 합니다.
이를 확장하여 임의 개수의 None
차원을 사용할 수 있습니다. 이 예시에서는 지난 강의의 이미지를 로드한 다음 해당 이미지의 슬라이스를 저장하는 자리 표시자를 만듭니다. 슬라이스는 이미지의 2D 세그먼트이지 만 각 "픽셀"에는 세 가지 구성 요소(빨간색, 녹색, 파란색)가 있습니다. 따라서 처음 두 차원에는 None
이 필요하지만, 마지막 차원에는 3
(또는 None
도 작동함)이 필요합니다. 그런 다음 TensorFlow의 슬라이스
메서드를 사용하여 작업할 이미지에서 하위 세그먼트를 가져옵니다.
- 공식 문서에서 TensorFlow의 배열에 대한 다른 함수를 살펴봅니다.
- 이미지를 4개의 "모서리"로 나눈 다음 다시 연결합니다.
- 이미지를 그레이 스케일로 변환합니다. 이를 위한 한 가지 방법은 단일 색상 채널만 가져와 표시하는 것입니다. 또 다른 방법은 세 채널의 평균을 회색으로 사용하는 것입니다.