TensorLabel은 축에 의미 있는 라벨이 있는 TensorBuffers용 유틸리티 래퍼입니다.
예를 들어 이미지 분류 모델에 형태가 {1, 10}인 출력 텐서가 있을 수 있습니다. 여기서 1은 배치 크기이고 10은 카테고리 수입니다. 실제로 두 번째 축에서 각 하위 텐서에 해당하는 각 카테고리의 이름 또는 설명으로 라벨을 지정할 수 있습니다. TensorLabel
는 TensorBuffer
의 일반 텐서를 사전 정의된 라벨에서 하위 텐서로의 매핑으로 변환하는 데 도움이 될 수 있습니다. 이 경우, 두 번째 축에 라벨 10개를 제공하면 TensorLabel
가 원래 {1, 10} 텐서를 10개 요소 맵으로 변환할 수 있으며, 각 값은 Tensor의 형태 {} (스칼라)입니다. 사용 예:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
참고: 현재 크기가 1보다 큰 첫 번째 라벨에만 텐서-맵 변환이 지원됩니다.
공개 생성자
TensorLabel(Map<Integer, List<String>> axisLabels, TensorBuffer tensorBuffer)
다차원 텐서의 축에 라벨을 지정할 수 있는 TensorLabel 객체를 만듭니다.
|
|
TensorLabel(List<String> axisLabels, TensorBuffer tensorBuffer)입니다
다차원 텐서의 한 축에 라벨을 지정할 수 있는 TensorLabel 객체를 만듭니다.
|
공개 메서드
List<Category> |
getCategoryList()
TensorLabel 객체에서 Category 목록을 가져옵니다. |
Map<String, Float> |
getMapWithFloatValue()
라벨을 부동 소수점에 매핑하는 지도를 가져옵니다.
|
Map<String, TensorBuffer> |
getMapWithTensorBuffer()
라벨 쌍과 해당 TensorBuffer가 있는 지도를 가져옵니다.
|
상속된 메서드
공개 생성자
공개 TensorLabel (Map<Integer, List<String>> axisLabels, TensorBuffer tensorBuffer)
다차원 텐서의 축에 라벨을 지정할 수 있는 TensorLabel 객체를 만듭니다.
매개변수
axisLabels | 키가 축 ID (0부터 시작)이고 값이 상응하는 라벨인 맵. 참고: 라벨의 크기는 해당 축의 텐서 크기와 동일해야 합니다. |
---|---|
tensorBuffer | 라벨을 지정할 TensorBuffer. |
생성 값
NullPointerException | axisLabels 또는 tensorBuffer 가 null이거나 axisLabels 의 값이 null인 경우 |
---|---|
IllegalArgumentException | axisLabels 의 키가 tensorBuffer 의 모양과 비교하여 범위를 벗어났거나 값(라벨)이 지정된 측정기준의 tensorBuffer 와 크기가 다른 경우입니다.
|
공개 TensorLabel (List<String> axisLabels, TensorBuffer tensorBuffer)
다차원 텐서의 한 축에 라벨을 지정할 수 있는 TensorLabel 객체를 만듭니다.
참고: 라벨은 크기가 1보다 큰 첫 번째 축에 적용됩니다. 예를 들어 텐서 모양이 [1, 10, 3]이면 라벨이 축 1 (0에서 시작하는 ID)에 적용되며 axisLabels
의 크기도 10이어야 합니다.
매개변수
axisLabels | 라벨 목록으로, 크기는 라벨을 지정할 축의 텐서 크기와 동일해야 합니다. |
---|---|
tensorBuffer | 라벨을 지정할 TensorBuffer. |
공개 메서드
public List<Category> getCategoryList ()
TensorLabel
객체에서 Category
목록을 가져옵니다.
라벨 축은 사실상 마지막 축이어야 합니다 (즉, 이 축으로 지정된 모든 하위 텐서의 크기가 1이어야 함). 그래야 라벨이 지정된 각 하위 텐서를 부동 소수점 값 점수로 변환할 수 있습니다. 예: 도형이 {2, 5, 3}
이고 축이 2인 TensorLabel
가 유효합니다. 축이 1 또는 0인 경우 Category
로 변환될 수 없습니다.
getMapWithFloatValue()
를 사용할 수 있지만 결과로 Map
를 반환합니다.
생성 값
IllegalStateException | 각 라벨의 하위 텐서 크기가 1이 아닌 경우 |
---|
public Map<String, Float> getMapWithFloatValue ()
라벨을 부동 소수점에 매핑하는 지도를 가져옵니다. 크기가 1보다 큰 첫 번째 축에만 매핑이 허용되며, 축은 사실상 마지막 축이어야 합니다 (즉, 이 축에 의해 지정된 모든 하위 텐서의 평면 크기가 1이어야 함).
getCategoryList()
는 결과를 가져오기 위한 대체 API입니다.
생성 값
IllegalStateException | 각 라벨의 하위 텐서 크기가 1이 아닌 경우 |
---|
public Map<String, TensorBuffer> getMapWithTensorBuffer ()
라벨 쌍과 해당 TensorBuffer가 있는 지도를 가져옵니다. 현재 크기가 1보다 큰 첫 번째 축 매핑만 허용합니다.