머신러닝, 딥러닝을 위한 프레임워크들로 텐서플로우 TensorFlow, 파이토치 PyTorch, 케라스 Keras, 사이킷런 Scikit-learn 등이 다양하게 사용되고 있습니다.
이중 텐서플로우 TensorFlow, 파이토치 PyTorch 가 가장 많이 사용된다고 하니 먼저 텐서플로우부터 알아보고자 합니다.
텐서플로우 TensorFlow 를 설치하고 테스트 해보려는데
텐서플로우가 64Bit 환경에서만 처리되는 관계로
64bit용 아나콘다 재설치, 가상환경 생성, 가상환경에서 필요한 패키지들 설치하느라 예상치 않은 시간을 소요했네요 ㅠㅠ
텐서플로우 TensorFlow 개요
텐서플로우 (TensorFlow) 란
더 보기
구글에서 만든 머신러닝을 위한 오픈 소스 라이브러리로 복잡한 수학계산을 효율적으로 처리하기 위해 활용됩니다.
텐서플로우(TensorFlow)는 이름처럼 텐서(Tensor :다차원의 배열)를 담고 있는 노드(Node)와 이를 다양한 연산으로 연결하고 있는 엣지(Edge)로 구성되어 있으며, 이러한 텐서들이 서로 연산을 통해 값을 주고받는 흐름(Flow)으로 작동됩니다. 다행히도 케라스(Keras)가 2017년에 텐서플로우 개발팀에 인수되어 텐서플로우의 공식 API 중 하나로 제공되기 시작해 TensorFlow 2.0부터는 케라스(Keras) API를 기본 API로 사용하여 딥러닝 모델을 더 쉽게 구성할 수 있도록 지원하고 있습니다
1. 용어 정의
1) 텐서(Tensor) : Tensor = Multidimensional Arrays = Data
딥러닝에서 텐서는 다차원 배열로 나타내는 데이터입니다.
예를 들어, RGB 이미지는 삼차원 배열로 나타나는 텐서입니다. 내부적으로 모든 데이터는 텐서를 통해 표현됩니다
2) 그래프(Graph)
우리가 알고 있는 그래프를 뜻하는 것이 아니고 계산 과정을 나타내는 데이터 구조입니다.
그래프는 노드(Node)와 엣지(Edge)로 이루어져 있으며,
각 노드는 수학적 연산을 나타내고,
엣지는 연산을 수행하는 데 필요한 데이터(텐서)의 흐름을 나타냅니다.
(3) 세션(Session)
그래프를 실행하기 위한 환경으로 세션 객체가 필요하고 세션은 오퍼레이션의 실행 환경을 캡슐화한 것입니다
(4) 플레이스홀더(Placeholder)
그래프를 실행할 때 입력값을 받아들이는 매개변수 역할을 합니다.
(5) 손실함수(Loss Function):
학습 중에 모델의 성능을 측정하는 함수
(6) 옵티마이저(Optimizer):
손실 함수를 최소화하기 위해 모델의 가중치를 업데이트하는 알고리즘
(7) 배치(Batch)
학습 데이터를 나누어서 처리하는 단위입니다.
(8) 에폭(Epoch)
전체 학습 데이터를 한 번씩 모두 학습한 상태
(9) 기타 용어
- Rank : 차원 수
- Shape : 배열 구조
- Rank와 Shape에 따른 n차원 배열
- Scalar : single number (rank 0), shape = ()
- Vector : 1-dim array (rank 1), shape = (d0)
- Matrix : 2-dim array (rank 2), shape = (d0, d1)
- Tensor : n-dim array (rank n), shape = (d0, d1, …, dn-1)
2. 텐서플로우(TensorFlow) 활용한 분석모델 구현 절차 (모델링 절차)
- 데이터 준비 : 데이터를 수집
- 데이터 전처리 : 데이터를 각각 배열로 변환하고, 누락된 데이터를 채워 넣기
- 데이터분할 : 전체 데이터를 훈련 데이터와 테스트 데이터로 분할
- 모델 구조 만들기 : LSTM(Long Short-Term Memory), GRU, CNN...
- 모델 평가: 학습한 모델을 사용하여 테스트 데이터에 대한 예측을 수행
- 예측 결과를 평가평가 지표로는 예측값과 실제값 간의 평균 제곱 오차(MSE)나 평균 절대 오차(MAE)를 사용
3. 텐서플로우(TensorFlow) 모델 종류
LSTM(Long Short-Term Memory) 모델: tensorflow.keras.layers.LSTM()
GRU(Gated Recurrent Unit) 모델: tensorflow.keras.layers.GRU()
CNN(Convolutional Neural Network) 모델: tensorflow.keras.layers.Conv2D()
DNN(Deep Neural Network) 모델: tensorflow.keras.layers.Dense()
RNN(Recurrent Neural Network) 모델: tensorflow.keras.layers.SimpleRNN()
4. 시그모이드와 리니어 함수 구분
시스모이드 함수 | 리니어 함수 |
이진 분류 문제에서 시그모이드 함수는 입력값에 대한 출력값이 0과 1 사이의 값을 갖기 때문에, 해당 샘플이 어떤 클래스에 속하는지 결정하는 데 사용됩니다. 예를 들어, 스팸 메일 필터링 문제에서 시그모이드 함수는 해당 이메일이 스팸인지 아닌지를 예측하는 데 사용됩니다. 이때 시그모이드 함수는 이메일의 특징을 입력값으로 받아서, 해당 이메일이 스팸일 확률을 0과 1 사이의 값으로 출력합니다 |
리니어 함수는 입력값에 대한 출력값이 선형적으로 증가하거나 감소하기 때문에, 입력값과 출력값 간에 선형적인 관계가 있다고 가정할 때 사용됩니다. 예를 들어, 부동산 가격 예측 문제에서 리니어 함수는 부동산의 특징(면적, 위치, 시세 등)을 입력값으로 받아서, 해당 부동산의 가격을 예측하는 데 사용됩니다. 이때 리니어 함수는 부동산의 특징과 가격 간에 선형적인 관계가 있다고 가정하여, 입력값과 출력값 간의 선형적인 관계를 모델링합니다 |
텐서플로우 TensorFlow 기초 함수
tf.constant : 상수(constant)를 생성하는 함수로 학습 과정에서 변경불가 tf.Variable : 변수(Variable)를 생성하는 함수로 학습 과정에서 값을 변경 tf.add : 더하기 tf.subtract : 빼기 tf.multiply : 곱셈 tf.divide() : 나눗셈 tf.truediv : 나뭇셈 의 몫 tf.mod : 나눗셈의 나머지 tf.abs : 절대값 tf.placeholder :실제 데이터가 들어갈 자리를 미리 만드는 함수 tf.nn.conv2d : 2차원 컨볼루션 연산을 수행하는 함수 tf.nn.max_pool : 최대값(maximum)을 뽑아내는 풀링(pooling) 연산을 수행하는 함수 tf.nn.softmax : 소프트맥스(softmax) 함수를 계산하는 함수로 분류 문제에서 출력값을 확률값으로 바꾸는데 사용 tf.reduce_sum : 텐서(tensor)의 모든 요소를 더하는 함수 tf.reduce_mean : 텐서(tensor)의 모든 요소의 평균값을 구하는 함수 tf.train.GradientDescentOptimizer : 경사 하강법(Gradient Descent)을 사용하여 모델을 학습시키는 함수 tf.keras.layers : 다양한 레이어(layer)를 생성하는 함수들을 제공 |
https://datawith.tistory.com/7
다음은 분석모델에 대하여 공부할 차례. 으쌰으쌰~
'데이터 분석 환경' 카테고리의 다른 글
텐서플로우 로그레벨 TF_CPP_MIN_LOG_LEVEL 설정 (0) | 2023.04.27 |
---|---|
아나콘다 Anaconda 가상환경 생성 및 사용 방법 (0) | 2023.04.21 |
CNN 분석에서 합성곱 Concolution 과 Feature Map ? (0) | 2023.04.19 |
선형 회귀분석, 로지스틱 회귀분석, 시계열분석 이해하기 (0) | 2023.04.12 |
댓글