TFLearn을 사용하여 훈련하고 저장 한 두 가지 신경망 모델이 있습니다. 각 스크립트를 실행하면 저장된 모델이 제대로로드됩니다. 첫 번째 모델의 출력 후에 두 번째 모델을 호출해야하는 시스템이 필요합니다. 그러나 첫 번째 모델이로드 된 후 두 번째 모델을로드하려고하면 다음 오류가 발생합니다.
NotFoundError (트레이스 백은 위 참조) : 체크 포인트에서 val_loss_2 키를 찾을 수 없음 [[노드 : save_6 / RestoreV2_42 = RestoreV2 [dtypes = [DT_FLOAT], _device = "/ job : localhost / replica : 0 / task : 0 / cpu : 0" ] (_ arg_save_6 / Const_0_0, save_6 / RestoreV2_42 / tensor_names, save_6 / RestoreV2_42 / shape_and_slices)]]
두 번째 모델은 첫 번째 모델의 로딩을 주석 처리하거나 2 개의 스크립트를 별도로 실행하면 제대로로드됩니다. 이 오류가 발생하는 이유를 아십니까?
코드 구조는 ..
from second_model_file import check_second_model
def run_first_model(input):
features = convert_to_features(input)
model = tflearn.DNN(get_model())
model.load("model1_path/model1") # relative path
pred = model.predict(features)
...
if pred == certain_value:
check_second_model()
은 second_model_file.py
비슷한 것입니다 :
def check_second_model():
input_var = get_input_var()
model2 = tflearn.DNN(regression_model())
model2.load("model2_path/model2") # relative path
pred = model2.predict(input_var)
#other stuff ......
모델은 서로 다른 폴더에 저장되어 있으므로 각각 고유 한 checkpoint
파일이 있습니다.
글쎄요, 해결책을 찾았습니다. 이 스레드 에 대한 토론에서 숨겨졌습니다 . tf.reset_default_graph()
두 번째 네트워크와 모델을 구축하기 전에 사용 했는데 제대로 작동했습니다. 이것이 다른 사람에게도 도움이되기를 바랍니다.
새 코드 :
import tensorflow as tf
def check_second_model():
input_var = get_input_var()
tf.reset_default_graph()
model2 = tflearn.DNN(regression_model())
model2.load("model2_path/model2") # relative path
pred = model2.predict(input_var)
이 솔루션이 작동하는 이유를 직관적으로 이해하고 있지만 누군가 그렇게 설계된 이유를 더 잘 설명해 주시면 기쁩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다