본문 바로가기
에러 모음

[TensorFlow] error: Lowering tensor list ops is failed. Please consider using Select TF ops and disabling `_experimental_lower_tensor_list_ops` flag in the TFLite converter object. For example, converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLIT..

by 귤이두번 2024. 3. 25.

error: Lowering tensor list ops is failed. Please consider using Select TF ops and disabling `_experimental_lower_tensor_list_ops` flag in the TFLite converter object. For example, converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS]\n converter._experimental_lower_tensor_list_ops = False

TFLite 모델로 바꿀때 생긴 문제 (RNN계열에서 생긴다)

이 오류 메시지는 TensorFlow Lite 변환 과정에서 특정 텐서 연산 목록을 낮추는(lowering) 작업이 실패했다는 것을 나타낸다. TensorFlow Lite는 TensorFlow 모델을 모바일 또는 임베디드 장치에서 실행할 수 있는 형식으로 변환하는 도구입니다.
변환 과정에서 모델이 사용하는 모든 TensorFlow 연산이 TensorFlow Lite에서 지원되는 연산으로 변환되어야 합니다.
그러나 일부 복잡한 TensorFlow 연산은 TensorFlow Lite에서 직접 지원되지 않을 수 있습니다.

이 문제를 해결하기 위해 TensorFlow Lite 변환기는 선택적 TensorFlow(TF) 연산 지원을 사용하여 이러한 복잡한 연산을 처리할 수 있다. 이 방식을 사용하면 TensorFlow Lite 변환기가 TensorFlow Lite에 내장된 기본 연산뿐만 아니라 선택적으로 TensorFlow 연산도 사용할 수 있게 된다.

import tensorflow as tf

# 모델을 불러오는 코드 (예: saved_model_dir은 TensorFlow SavedModel의 경로입니다)
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)

# 선택적 TF 연산 지원 활성화
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, 
                                       tf.lite.OpsSet.SELECT_TF_OPS]

# 텐서 리스트 연산의 자동 낮추기 처리 비활성화
converter._experimental_lower_tensor_list_ops = False

# TFLite 모델로 변환
tflite_model = converter.convert()

# TFLite 모델을 파일로 저장
with open('model.tflite', 'wb') as f:
    f.write(tflite_model)

댓글