알 수 없는 계층: 자체 정의 클래스 로드 및 tcn 모델 가져오기에 대한 TCN 질문

알 수 없는 계층: 자체 정의 클래스 로드 및 tcn 모델 가져오기에 대한 TCN 질문

오류 수집:

  1. ValueError: 알 수 없는 레이어: TCN
  2. 추가된 레이어는 Layer 클래스의 인스턴스여야 합니다. 발견: <tcn.tcn.TCN 개체 at 0x000001F72743BDC8>

1. 문제 찾기

TCN 모델에 대해 실행할 때 ".h5" 파일로 실행한 후 모델을 저장한 다음 다른 시계열 예측에 대해 다른 모델 선택을 실현하기 위해 프런트 엔드를 작성한 다음 실행합니다.

model_tcn=load_model(model_path)

오류가 발생했습니다.

  File "S:\physon\envs\tensorflow\lib\site-packages\keras\utils\generic_utils.py", line 140, in deserialize_keras_object
    ': ' + class_name)
ValueError: Unknown layer: TCN
Unknown layer: TCN

이유는 알 수 없는 레이어가 추가된 후 탐색을 시작했기 때문입니다. 분석 후 주로 다음과 같은 이유가 있으며 나중에 검색할 수 있도록 해결 및 기록되었습니다.

2. 문제 해결

첫 번째 단계는 사용자 정의 레이어
솔루션을 추가하는 것입니다 . 먼저 사용자 정의 레이어를 추가하는 방법을 쿼리하고로드 함수에 " custom_objects " 속성을 추가합니다.

model_tcn=load_model(model_path,custom_objects={
    
    'TCN':TCN})

여기에서 TCN은 실제 상황에 따라 대체되며, 정의된 레이어 이름으로 작성됩니다. model_path는 자신의 모델 위치입니다.
수정하고, 실행하고, 기다리십시오. . . . 예쁜!
오류: 추가된 레이어는 레이어 클래스의 인스턴스여야 합니다.

  File "S:\physon\envs\tensorflow\lib\site-packages\keras\engine\sequential.py", line 133, in add
    'Found: ' + str(layer))
TypeError: The added layer must be an instance of class Layer. Found: <tcn.tcn.TCN object at 0x000001F72743BDC8>

두 번째 단계는 tf.keras 및 keras 모듈을 확인하는 것입니다.
인터넷에서 찾은 이유는 tf.keras 및 keras 모듈을 사용하거나 tensorflow.python.keras를 사용하여 참조와 keras 참조를 혼합하면 다음과 같은 오류가 발생합니다
. : keras 앞부분 삭제 tf나 tensorflow는 링크를 참고해주세요 Click me .
수정하고 실행하고 기다립니다. . . . 이쁘네요 아직 1단계에서 오류신고했는데 확인해보니 텐서플로를 불러오지 않아서 계속 찾아보고 드디어! tcn의 소스코드 파일 tcn.py를 확인해보면 tcn이 tensorflow를 기반으로 하고 있음을 알 수 있습니다.
tcn 참조 문서
세 번째 단계는 load 함수를 확인하고 수정하는 것입니다
.tcn은 tensorflow를 기반으로 하기 때문에 tensorflow import model
솔루션을 사용해야 합니다 : import tensorflow, load_model 함수 앞에 다음과 같이 *tf.keras.models.*를 추가합니다.

import tensorflow as tf
model_tcn=tf.keras.models.load_model(model_path,custom_objects={
    
    'TCN':TCN})

수정, 실행, 대기. . . . 살아났습니다! 드디어 해결! ! !

자신의 문제를 기록하는 사람들은 잘못된 것이 있으면 저를 바로잡을 수 있습니다!

추천

출처blog.csdn.net/weixin_45913922/article/details/124011007