output 텐서의 차원에 대한 정보는 세개 변수에 저장된다.

TfLiteType type;
TfLiteIntArray* dims;
size_t bytes;

 

type은 개별 엘리먼트의 출력 포맷(float라던가 uint8 이라던가)의 변수 크기를 저장하고

dims.size 에는 몇 차원 텐서인지

dims.data[] 에는 차원별 갯수를 저장한다.

dims.size = 4

dims.data[] = [1 7 7 18] 식으로 저장되며

float32형이기에

1*7*7*18*sizeof(float) = 3528 byte로

해당 내용은 bytes에 저장된다.

 

TfLitePtrUnion data;

그리고 그 용량의 데이터는 data에 저장되어 접근을 하면 되는데..

차원을 어떻게 접근해야 하려나.. -_-

 

대충 label_image.cc 예제에서 이런 식으로 출력하면 okay

    printf("dims size[%d]\n",output_dims->size);
    for(int idx = 0; idx < output_dims->size; idx++)
    {
            printf("%d\t",output_dims->data[idx]);
    }

    printf("tensor pos bytes [%d]\n",interpreter->tensor(interpreter->outputs()[0])->bytes);
    printf("tensor per bytes [%d]\n",interpreter->tensor(interpreter->outputs()[1])->bytes);

 

'프로그램 사용 > yolo_tensorflow' 카테고리의 다른 글

tflite typed_tensor(), tensor()  (0) 2021.06.25
tflite yolov4  (0) 2021.06.14
tensorflow lite interpreter->AllocateTensors()  (0) 2021.05.26
tflite common.h  (0) 2021.05.21
imx6q neon tensorlow lite  (0) 2021.05.10
Posted by 구차니