tensorflow, 딥러닝(GPU 작업) 중 해제하기.
조회수 1429회
현재 tensorflow GPU로 딥러닝 학습시키고 있습니다. Graph,Session 초기화하고 새로만들어서 GPU할당량 만큼 동시에 여러개 학습 시키도록 짰는데요. 학습시간이 긴 작업은 중간에 중지시키고 싶은데, 잘 해결방법을 못찾겠습니다.
처음 시도한게 Session ID를 만들어서 각 Session ID마다 dafault 시키는 방법 이었는데, 아무리 찾아봐도 Session을 열고 닫아만 주지 ID를 따로 부여하는거 같지 않더라고요.
stop누르면 특정 경로에 log파일 만들어서 log파일 있을 시 break문으로 학습 종료 시키려 했는데, history=fit() 내장 함수 안에서 모든게 학습되기 때문에 하지 못했고,
keras 내에 callback(딥러닝 학습 중 학습 값이 더디거나, 변화없으면 학습종료) 함수에 변수를 넣고, 해보려 했는데, 잘 해결하지 못했습니다.
딥러닝 학습 도중 원하는 세션만 닫는 방법론 공유해주시면 감사하겠습니다.
실행 파일.py
import tensorflow as tf
import keras
from keras.backend.tensorflow_backend import clear_session
def IoT():
g1 = tf.get_default_graph()
s1 = tf.get_default_session()
del g1, s1
# 기존 graph,session을 제거(새로운 그래프,세션를 만들기 위함<메모리 release문제로>)
g=tf.Graph() #새롭게 그래프 선언해 세션을 만들고 gpu 작업.
with g.as_default():
s=tf.Session(config=config)
with s.as_default
....
#세션 선언하고 인공지능 모델링 돌리는 부분
mode11 = Model(x, fix_names([xpred, yfake, yreal], ["xpred", "yfake", "yreal"]))
....
model = AdversarialModel(base_model=model11,
player_params=[generative_params, discriminator.trainable_weights],
player_names=["generator", "discriminator"])
....
model.adversarial_compile(adversarial_optimizer=adversarial_optimizer,
player_optimizers=[Adam(3e-4, decay=1e-4), Adam(1e-3, decay=1e-4)],
loss={"yfake": "binary_crossentropy", "yreal": "binary_crossentropy",
"xpred": "mean_squared_error"},
player_compile_kwargs=[{"loss_weights": {"yfake": 1e-1, "yreal": 1e-1,
"xpred": 1e2}}] * 2)
....
#출력하고 히스토리를 저장하는 부분
csv_logger = keras.callbacks.CSVLogger(log_path)
history = fit(model, x=xtrain, y=y, validation_data=(xtest, ytest), nb_epoch=epoch,
batch_size=int(batch), callbacks=[csv_logger])
clear_session()
s.close()
del g, s
작업 중지.py
def workstop():
work stop
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Modeing 진행중에 접근할 수 있는 사용자 정의 함수를 만들어서 해결했습니다. Model fit에 사용자 정의 CallBack 함수 만들어서, 함수안에 조건이 만족했을 때, if문으로 조건을 줘서 세션 멈추게 해주는 stop 함수로 해결 했숩니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력