Path: blob/master/site/ko/guide/tensor_slicing.ipynb
25115 views
Copyright 2020 The TensorFlow Authors.
텐서 슬라이싱 소개
객체 감지 및 NLP와 같은 ML 애플리케이션에서 작업할 때 텐서의 하위 섹션(슬라이스)으로 작업해야 하는 경우가 있습니다. 예를 들어, 모델 아키텍처에 라우팅이 포함된 경우 한 계층이 다음 계층으로 라우팅되는 교육 예제를 제어할 수 있습니다. 이 경우 텐서 슬라이싱 작업을 사용하여 텐서를 분할하고 올바른 순서로 다시 결합할 수 있습니다.
NLP 애플리케이션에서 텐서 슬라이싱을 사용하여 훈련하는 동안 워드 마스킹을 수행할 수 있습니다. 예를 들어 각 문장에서 마스킹할 단어 인덱스를 선택하고 해당 단어를 레이블로 선택한 다음 선택한 단어를 마스크 토큰으로 교체하여 문장 목록에서 훈련 데이터를 생성할 수 있습니다.
이 가이드에서는 TensorFlow API를 사용하여 다음을 수행하는 방법을 배웁니다.
텐서에서 조각 추출
텐서의 특정 인덱스에 데이터 삽입
이 가이드는 텐서 인덱싱에 익숙하다고 가정합니다. 이 가이드를 시작하기 전에 Tensor 및 TensorFlow NumPy 가이드의 인덱싱 섹션을 읽으십시오.
설정
텐서 조각 추출
tf.slice
사용하여 NumPy와 같은 텐서 슬라이싱을 수행합니다.
또는 더 Pythonic 구문을 사용할 수 있습니다. 텐서 슬라이스는 시작-정지 범위에 걸쳐 균등하게 간격을 두고 있습니다.
2차원 텐서의 경우 다음과 같이 사용할 수 있습니다.
고차원 텐서에서도 tf.slice
를 사용할 수 있습니다.
tf.strided_slice
'하여 텐서 조각을 추출할 수도 있습니다.
tf.gather
를 사용하여 텐서의 단일 축에서 특정 인덱스를 추출합니다.
tf.gather
는 인덱스 간격이 균일할 필요가 없습니다.
텐서의 여러 축에서 슬라이스를 추출하려면 tf.gather_nd
사용하십시오. 이는 행이나 열이 아닌 행렬의 요소를 수집하려는 경우에 유용합니다.
텐서에 데이터 삽입
tf.scatter_nd
를 사용하여 텐서의 특정 슬라이스/인덱스에 데이터를 삽입합니다. 값을 삽입하는 텐서는 0으로 초기화됩니다.
0으로 초기화된 텐서를 필요로 하는 tf.scatter_nd
와 같은 메서드는 희소 텐서 이니셜라이저와 유사합니다. tf.gather_nd
및 tf.scatter_nd
를 사용하여 희소 텐서 작업의 동작을 모방할 수 있습니다.
이 두 가지 방법을 함께 사용하여 희소 텐서를 구성하는 예를 고려하십시오.
이것은 다음과 유사합니다.
기존 값이 있는 텐서에 데이터를 삽입하려면 tf.tensor_scatter_nd_add
사용하세요.
마찬가지로 tf.tensor_scatter_nd_sub
를 사용하여 기존 값이 있는 텐서에서 값을 뺍니다.
tf.tensor_scatter_nd_min
을 사용하여 한 텐서에서 다른 텐서로 요소별 최소값을 복사합니다.
마찬가지로 tf.tensor_scatter_nd_max
를 사용하여 한 텐서에서 다른 텐서로 요소별 최대값을 복사합니다.
추가 읽을거리 및 리소스
이 가이드에서는 TensorFlow에서 사용할 수 있는 텐서 슬라이싱 작업을 사용하여 텐서의 요소를 더 세밀하게 제어하는 방법을 배웠습니다.
tf.experimental.numpy.take_along_axis
및tf.experimental.numpy.take
와 같이 TensorFlow NumPy에서 사용할 수 있는 슬라이싱 작업을 확인하세요.Tensor 가이드 와 Variable 가이드 도 확인하세요.