Note ≡ 텐서플로 1.x와 텐서플로 2.x 버전의 실행 과정 차이점
텐서플로 1.x에서 데이터를 사용하여 훈련하려면 그래프를 만들고 플레이스홀더(placeholder)를 정의한 후 세션(session)을 실행해야만 합니다. 즉, 세션 실행(run(feed_dict)) 시점에 입력 데이터셋을 플레이스홀더에 넣고 처리하는 복잡한 과정이 필요했습니다.
하지만 텐서플로 2.x부터는 즉시 실행(eager execution)이 기본 모드로 설정되어 있기 때문에 플레이스홀더, 세션, 실행 등 과정이 필요하지 않습니다. 즉, 모델을 사용하여 데이터를 훈련하고 예측하는 과정이 매우 단순해졌습니다. 즉시 실행은 텐서플로를 대화형으로 프로그래밍할 수 있도록 하는 것입니다. 텐서플로 1.x처럼 그래프 기반 방식에서 벗어나 그래프 생성 없이 연산을 즉시 실행할 수 있는 환경을 제공합니다.
다음은 텐서플로 1.x와 텐서플로 2.x 버전의 코드를 비교한 것입니다. 텐서플로 1.x에서 길고 복잡했던 코드들이 텐서플로 2.x에서는 간단하게 바뀐 것을 확인할 수 있습니다.
# 텐서플로 1.x
with tf.Session() as session:
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=10, batch_size=64)
# 텐서플로 2.x
model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=10, batch_size=64)