참고) 해당 포스팅은 패스트 캠퍼스 100% 환급 챌린지 미션 기록용 포스팅이며, 강좌 내용에 맞추어 포스팅함을 언급
클립명 : PART2)TensorFlow 2.0과 Pytorch 프레임워크 기초
01. TensorFlow2.0과 Pytorch소개 02. TensorFlow2.0 기초 사용법 06. 예제 dataSet소개(MNIST) 및 불러오기
이번 포스팅에서는 TensorFlow 소개 및 기초적인 사용법에 대해서 알아본다. 그리고 MNIST DATASET을 불러오는 방법 및 그의 따른 다양한 개념들에 대해서 알아본다. TensorFlow란 파이썬에서 머신러닝 관련된 작업을 할 때 주로 사용되는 라이브러리다. 오픈소스이며 구글내 연구과 제품개발을 위한 목적으로 구글 브레인팀이 만들었다고 알려져있다. 파이썬에서 쉽게 사용할 수 있는 list, set, dict와 같은 클래스처럼 tensorflow도 클래스로 이루어져 머신러닝 작업에 주로 사용되는 것 같다(주로 numpy와 같이 사용되는 것 같음)
import numpy as np
import tensorflow as tf
#%% 1강
tf.constant([1,2,3])
arr = np.array([1,2,3])
tensor = tf.constant(arr)
# Tensor에 담긴 정보 확인
tensor.shape
tensor.dtype
# 참고 <- 처음부터 데이터 타입을 정해주는 것이 좋다
tensor = tf.constant([1,2,3], dtype =tf.float32)
tensor
tf.cast(tensor, dtype = tf.uint8)
# Tensor에서 Numpy불러오기
tensor.numpy()
# RandomNumber 생성
np.random.randn(9) # Normal Distribution에서 난수 9개 생성
tf.random.normal([3,3]) # tensorflow에서 Normal Distribution에서 난수 생성
tf.random.uniform([4,4]) # tensorflow에서 Uniform 난수 생성
<code1. TensorFlow constant설정 및 난수 생성방법>
위의 code1에서 알 수 있듯이 tensorflow를 이용해 상수 및 난수를 생성하는 방법을 적어놓았다. 상수의 경우 다른 객체들과는 다르게 상수 type까지 입력해주는 모습을 볼 수 있는데, 모델의 복잡성의 따라 다양한 타입의 변수를 요구할 수 있으며, 그에 따라 어디서 Error가 났는지 쉽게 찾기 위해서 적는것 같다. 물론, 파이선 말고 다른 언어를 주로 사용하는 사람들에게는 변수를 생성할때 부터 타입을 입력하는 편이지만, 코드를 파이썬으로 시작한 사람들에게는 익숙치 않는 모습이다.
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
###### 데이터 불러오기(TensorFlow에서 제공해주는 데이터셋(MNIST)예제 불러오기 #####
from tensorflow.keras import datasets
mnist = datasets.mnist
(train_x, train_y), (test_x, test_y) = mnist.load_data()
train_x.shape # result = (60000, 28, 28) <- 28 x 28 이미지의 갯수가 6만개
# 데이터 하나만 뽑기
image = train_x[0]
image.shape # 28 x 28 이미지가 1개 추출 <- 60000개 중 첫번째 이미지를 불러온 것
plt.imshow(image, 'gray')
plt.show()
# Channel 관련
# [Batch Size, Height, Width, Channel]
# Grey scale이면 1, RGB이면 3으로 만들어줘야함
train_x.shape
#데이터 차원수 늘리기(Numpy)
expanded_data = np.expand_dims(train_x, -1) # -1이면 맨 마지막 차원을 늘려주고, 0이면 맨 앞에 차원을 늘려준다
expanded_data.shape
new_train_x = tf.expand_dims(train_x, -1)
new_train_x.shape
# tensorflow 공홈 방법(tf.newaxis)
train_x[..., tf.newaxis].shape
new_train_x.shape
# 참고 -> 차원 축소 방법
disp = np.squeeze(new_train_x[100])
disp.shape
plt.imshow(disp, 'gray')
plt.show()
# Label 시각화
plt.title(train_y[0])
plt.imshow(train_x[0])
plt.show()
plt.title(train_y[0])
plt.imshow(train_x[0], 'gray')
plt.show()
<code2. TensorFlow 차원 변환 및 MNIST DATA 불러오기>
위의 Code2는 MNIST 데이터를 불러와서 train 및 test 변수들에 인풋하는 방법이며, 차원 축소 및 확대를 텐서플로우로 어떻게 하는지 보여주고 있다. 보통 차원의 경우도 모델링에 있어서 중요한 지켜야할 규칙이며, 차원이 안 맞을 경우 모델이 실행되다 중간에 멈추며, 그것을 찾는 과정이 오래 걸리기 때문에 사전에 확인하면서 조절해 주는 것이 좋다.
(글자수 : 총 1048자 및 Code포함 2000자 이상)
강의 소개 링크 : bit.ly/3cx6kMd
딥러닝/인공지능 올인원 패키지 Online. | 패스트캠퍼스
Tensorflow2.0부터 Pytorch까지 딥러닝 대표 프레임워크를 정복하기. 생활 깊숙이 침투한 인공지능, 그 중심엔 딥러닝이 있습니다. 가장 강력한 머신러닝의 툴로서 주목받는 딥러닝은 생각보다 어려
www.fastcampus.co.kr
'Deep Learning & AI > AI' 카테고리의 다른 글
Tensorflow2.0 각 CNN 코드 구현 02 (0) | 2021.03.06 |
---|---|
Tensorflow2.0 각 CNN 코드 구현 (0) | 2021.03.02 |
Tensorflow2.0 각 Layer별 역활 개념 및 파라미터 파악 (0) | 2021.02.27 |
CNN 모델구조 (0) | 2021.02.17 |
인공지능 개념 & 딥러닝 용어 (0) | 2021.02.17 |