본문 바로가기
Eager Execution Mode와 Tensor (Keras) (상식)

가끔 Keras로 뭔가를 하다 보면, Eager Execution Mode라는 걸 만나게 되는데, 이걸 잘 모르고 모형을 테스팅하게 되면 Error를 만났을 때 이게 무슨 소린가 싶을 때가 생깁니다. 

쉽게 말해서, 예전 Tensorflow(1.xx버전을 의미합니다.)에서는 뭔가 모형에 데이터에 흘릴 때 Session을 열어서 그 Session안에서 Tensor를 흘려서 계산했거든요. 그러다 보니까, 이게 불편한 게 한두 가지가 아니더란 말이죠. 오죽하면 Framework이름이 Tensorflow였겠습니까. 예를 들면 모형 중간만 따서 데이터를 집어넣어 보고 실제 동작을 살펴보고 싶을 때 쉽지 않았거든요. 그래서 Tensorflow 2.xx에서는 이걸 모두 추상화해서 사용자가 Session이고 머고 신경 안 써도 되게 개선을 했습니다. 

그게 Eager Mode이고요, 학습시킨 Model이 있다면 그 Model에 numpy array만 넣어주어도 그 결과를 계산해서 모형의 출력을 내줍니다. 이거 정말 대변혁과 같은 일이죠. 

가끔 이 Eager Mode를 놓쳐서 이게 왜이러지 싶을 때가 뭐냐면, 
Model에 직접적으로 numpy array를 넣으면 결과가 Tensorflow tensor로 결과가 나옵니다. 그러면 출력.numpy().reshape()등을 이용해서 numpy array로 바꿔줘야 되는데, 그냥 reshape으로 뭘 해버리니까 에러가 나거나, 엉뚱한 결과가 나옵니다. - 대부분 에러가 납니다. -

이제는 이해되는 당연한 이야기이지만
Model.predict(입력)으로 출력을 얻으면 numpy array로 출력을 얻습니다. 

 이제 Eager Mode에 대해 조금은 이해할 수 있게 되지 않았나 생각합니다. 

친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -