TensorFlow는 구글이 개발한 오픈소스 라이브러리로, 기계 학습 및 딥러닝 모델을 구축하고 효과적으로 훈련시키는 데 사용된다. 주로 신경망을 비롯한 다양한 기계 학습 모델을 구현하는 데에 활용된다.
TensorFlow는 다양한 기능을 제공하며, 그래프 기반의 계산을 수행하여 복잡한 수치 연산을 효율적으로 처리합니다. 이를 통해 대규모 데이터셋에서 빠르고 효율적인 모델 학습이 가능하다.
TensorFlow는 딥러닝 이외에도 기계 학습, 자연어 처리, 이미지 인식, 음성 인식 등 다양한 분야에서 활용되며, 업데이트와 지속적인 발전이 이루어지고 있다.
TensorFlow는 패키지를 따로 설치해야 사용가능하다. Docker와 pip 설치 중에 나는 pip로 설치를 하였다. anaconda prompt에 다음과 같은 명령어를 적으면 설치가 완료된다.
pip install --upgrade pip
오류가 날 경우, 다음과 같이 경로와 함께 적어주면 된다.
C:\anaconda3\python.exe -m pip install --upgrade pip
# for cpu and gpu
pip install --upgrade tensorflow
# cpu-only
pip install --upgrade tensorflow-cpu
cpu와 gpu를 같이 사용할 때와 cpu만 사용할 때의 명령어가 다르니 주의하도록 하자. 되도록이면 위에 있는 명령어를 적는 편이 좋다.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
print(tf.__version__)
print('GPU 사용 가능 ' if tf.test.is_gpu_available() else 'GPU사용 불가능 ㅜㅜ')
print(tf.config.list_physical_devices('GPU'))
사용하던 파이썬 컴파일러에 다음과 같은 명령어를 작성하고 성공적으로 출력이 된다면 설치가 완료된 것이다. 특히, tensorflow가 오류 없이 임포트 잘 되는지 확인해보자.
TensorFlow 사이트를 참조해라.
텐서플로(TensorFlow)에서의 텐서는 다차원 배열을 나타내며, 데이터의 기본적인 구성 요소이다.
텐서는 수치용 컨테이너(수치를 담을 수 있는 메모리)라고도 하며, 임의의 차원을 가지는 행렬의 일반화된 모습이다. 계산그래프 구조를 갖는다.
- 0차원 텐서 : 스칼라라고 하며, 하나의 숫자만을 나타낸다.
- 1차원 텐서 : 벡터로, 숫자들이 나열된 형태이다. 예를 들어
[1, 2, 3]
과 같은 형태이다.- 2차원 텐서 : 행렬로, 숫자들이 행과 열로 구성된 형태이다. 예를 들어
[[1, 2], [3, 4]]
와 같은 형태이다.- 3차원 이상의 텐서 : 3차원 텐서는 이미지를 표현하는 데 사용된다. 이미지는 폭, 높이, 채널(depth)의 차원을 가지고 있어서 3차원 텐서로 표현된다.
- 4차원 이상 : 비디오 또는 일련의 이미지로 구성된 영상을 나타내는 데 사용된다. 시간, 폭, 높이, 채널 등의 차원을 가지는 영상을 표현할 때 사용된다.
import tensorflow as tf
# 0차원 텐서 (스칼라)
scalar_tensor = tf.constant(5)
print("0차원 스칼라 텐서:")
print(scalar_tensor)
print("텐서의 값:", scalar_tensor.numpy()) # 텐서의 값 확인
# 1차원 텐서 (벡터)
vector_tensor = tf.constant([1, 2, 3, 4])
print("\n1차원 벡터 텐서:")
print(vector_tensor)
print("텐서의 값:", vector_tensor.numpy())
# 2차원 텐서 (행렬)
matrix_tensor = tf.constant([[1, 2], [3, 4]])
print("\n2차원 행렬 텐서:")
print(matrix_tensor)
print("텐서의 값:")
print(matrix_tensor.numpy())
# 텐서의 형태(shape) 확인
print("\n텐서의 형태(shape):")
print("0차원 텐서:", scalar_tensor.shape)
print("1차원 텐서:", vector_tensor.shape)
print("2차원 텐서:", matrix_tensor.shape)
import tensorflow as tf
: TensorFlow 라이브러리를 임포트한다.tf.constant()
: 상수 텐서를 생성하는 함수로, 주어진 값으로 텐서를 생성한다.print()
를 통해 텐서의 구조와 값, 형태(shape)를 확인한다.numpy()
메서드를 사용하여 텐서의 값(numpy 배열)을 확인할 수 있다.tf.constant() : 탠서를 직접 기억
tf.Variable() : 탠서가 저장된 주소를 참조
TensorFlow에서 tf.constant()
와 tf.Variable()
은 텐서플로에서 상수와 변수를 생성하는 데 사용된다.
tf.constant()
함수는 상수 텐서를 생성하는 데 사용된다. 이 함수는 값을 갖는 불변(immutable)한 텐서를 만든다.
import tensorflow as tf
# 상수 텐서 생성
constant_tensor = tf.constant([1, 2, 3, 4])
print("상수 텐서:")
print(constant_tensor)
tf.Variable()
함수는 변수 텐서를 생성하는 데 사용된다. 이 함수를 사용하여 값을 갖는 변경 가능한 텐서를 만든다.
import tensorflow as tf
# 변수 텐서 생성
initial_value = tf.constant([1, 2, 3, 4])
variable_tensor = tf.Variable(initial_value)
print("변수 텐서:")
print(variable_tensor)
tf.constant()
함수는 값을 갖는 불변(immutable)한 상수 텐서를, tf.Variable()
함수는 변경 가능한 변수 텐서를 생성한다. 주의할 점은 변수 텐서는 초기화되어야 하며, 값을 변경하거나 업데이트할 수 있다.
주요 함수와 메서드 중 일부만 알아보자.
tf.constant(): 주어진 값으로 상수 텐서를 생성한다. 생성된 텐서는 값이 고정되어 변경할 수 없다. -> 앞에서 언급한 내용
tf.Variable(): 초기 값을 갖는 변수 텐서를 생성한다. 변수 텐서는 값을 변경하거나 업데이트할 수 있다. -> 앞에서 언급한 내용
tf.add(), tf.substract(), tf.multiply(), tf.divide(): 텐서의 더하기, 빼기, 곱하기, 나누기 연산을 진행하는 함수이다.
tf.constant_initializer(): 변수 초기화 방법 중 하나로, 상수 값을 이용하여 변수를 초기화한다.
tf.zeros(), tf.ones(): 주어진 크기의 모든 요소를 0이나 1로 초기화하는 텐서를 생성한다.
tf.random_normal(), tf.random_uniform(): 정규 분포나 균등 분포에 따라 랜덤한 값을 가지는 텐서를 생성한다.
tf.matmul(): 행렬 곱셈을 수행하는 함수로, 두 개의 행렬을 곱한다.
tf.nn.relu(), tf.nn.sigmoid(), tf.nn.softmax(): 주로 활성화 함수로 사용되며, ReLU, 시그모이드, 소프트맥스 등을 계산하는 함수이다.
tf.reduce_mean(), tf.reduce_sum(): 텐서의 평균이나 합을 계산하는 함수이다.
tf.keras.layers: 고수준 API인 케라스의 레이어를 활용하여 모델을 쉽게 구축하는 데 사용된다.
tf.GradientTape(): 자동 미분을 위한 기능으로, 그래디언트를 계산하는 데 사용된다.
tf.train.Optimizer: 경사하강법 알고리즘을 포함한 최적화 알고리즘을 적용하여 모델을 학습하는 데 사용된다.
tf.keras.Model.compile(), tf.keras.Model.fit(): 케라스 API를 사용하여 모델을 컴파일하고 학습시키는 메서드이다.
이러한 함수와 메서드들은 TensorFlow에서 모델을 구축하고 학습하는 데 필수적으로 사용되며, 딥러닝 모델의 각 단계에서 다양하게 활용된다.