텐서플로우 5

Tensorflow 기초 : 모듈, 레이어, 모델 클래스 구조 알아보기

Tensorflow는 가장 흔하게 사용되는 딥러닝 프레임워크로 그 구조를 알아보고, 어떻게 활용할 수 있는지 공식 document를 보고 내용을 정리해보았습니다. 흔히 신경망모델에서의 레이어는 수학적인 구조로 이루어진 함수입니다. 딥러닝에서는 이 레이어에서 weights, bias와 같은 가중치(trainable variables)를 가지고있고, 이들이 적합한 값으로 학습되도록 하는 과정을 거칩니다. Tensorflow에서는 이러한 레이어를 함수로 재사용하고, 가중치를 저장했다가 로드할 수 있는 기능들을 제공합니다. 이를 지원하는 Tensorflow의 클래스는 tf.Module입니다. 간단한 사용 예시를 보겠습니다. tf.Module을 상속받는 클래스는 아래의 두 함수로 정의할 수 있습니다. __init..

AI/Fundamental 2024.03.27

[Tensorflow 2.0] 텐서플로우 데이터 구조 파악하기 (tf.data.Dataset + TFRecord)

텐서플로우로 딥러닝 모델을 학습시키기 위한 첫번째 단계로 인풋데이터를 마련해야한다. 우선, 먼저 Tensorflow에서 지원하는 data input pipeline 문서를 보고 파악해보고자 한다. https://www.tensorflow.org/guide/data tf.data: TensorFlow 입력 파이프라인 빌드 | TensorFlow Core tf.data: TensorFlow 입력 파이프라인 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. tf.data API를 사용하면 간단하고 재사용 가능한 조각으로 복잡한 입력 파 www.tensorflow.org The tf.data API input pipeline은 데이터 소스에서부터 시작해야한다. tf.data.D..

Tensorflow의 Loss Function과 Metrics의 차이

우리는 Tensorflow에서 학습 모델을 구축하려 한다. model architecture를 구성한 뒤, 모델을 실행시키기 위해서는 model compile 과정을 거치게 된다. compile단계에서는 loss function과 metrics를 정의해줄 수 있는데, 여러 종류의 loss function, metrics 중에서 풀고자하는 문제에 적합한 손실함수와 매트릭스를 선택하게 된다. 예를 들어 이진 분류 문제에서는 loss='binary_crossentropy', metrics='accuracy'를 해줄 수 있고, 회귀 문제라면 loss='mean_squared_error', metrics='mean_absolute_percentage_error'로 선택하여 모델을 컴파일할 수 있다. 얼핏보면 lo..

Tensorflow, Numpy - squeeze()와 flatten()의 차이

Tensorflow(Keras)에서는 다양한 연산을 해줄 수 있는함수들을 Layer의 형태로 제공해주고 있다. (ex. Dense, Convolution, Pooling,,,) 어떤 값들이 Layer를 통해서 나오는 Output은 텐서 형태로 그 결과물에 대해 추가적인 변형을 주고싶을 때는 해당 객체를 numpy형태로 변환해주어야한다. 그 과정은 아래의 MaxPooling2D 레이어를 거친 결과물로 예시를 들어 코드를 작성한 것에서 pooled_max.numpy()부분이다. import numpy as np import tensorflow as tf from tensorflow.keras.layers import MaxPooling2D N, n_H, n_W, n_C = 1, 5, 5, 1 f, s = 2..

[Tensorflow] 그림으로 이해하는 CNN 연산과정 (코드포함)

import numpy as np import tensorflow as tf from tensorflow.keras.layers import Conv2D N, n_H, n_W, n_C = 1, 5, 5, 3 n_filter = 5 k_size = 4 images = tf.random.uniform(minval=0, maxval=1, shape=(N,n_H,n_W,n_C)) # Forward Propogation(Tensorflow) conv = Conv2D(filters=n_filter, kernel_size=k_size) Y = conv(images) print(f"Y.shape : {Y.shape}\n") print(f"Y : \n{Y.numpy().squeeze()}\n") # Output Y.sh..