Programming/python-deep learning

[tensorflow] RaggedTensor란?

방황하는 데이터불도저 2024. 1. 15. 19:40

tensorflow에서 지원하는 텐서를 담을 수 있는 데이터구조 중에서 RaggedTensor라는 것이 있다.

ragged는 irregular와 같은 의미로, RaggedTensor는 각 차원마다 다른 길이(length)를 가질 수 있는 데이터 구조이다.

 

예시로

tf.RaggedTensor(
    values=Tensor("StringSplit/StringSplitV2:1", shape=(None,), dtype=string),
    row_splits=Tensor("StringSplit/RaggedFromValueRowIds/RowPartitionFromValueRowIds/concat:0", shape=(None,), dtype=int64)
)

 

values는 실제로 포함하고있는 데이터로 "StringSplit/StringSplitV2:1"라는 이름의 Tensor를 가지고 있다는 뜻이다. 그 Tensor의 shape가 None이라고 표시된 것은 차원의 길이가 고정되지 않았다는 의미이다. dtype은 string으로 데이터의 타입이 문자열의 형태라는 의미다.

 

row_splits는 ragged tensor에 대한 row_split을 표현하는 데이터를 담고있다. 다시 말해 values의 tensor의 row 사이를 split하기 위한 indices 정보를 담고있다. row_splits의 속성들은 values에서 해석한것과 같이 이해하면 된다.