Python/ML & DL 공부 21

[DL] 09-3 LSTM과 GRU 셀

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH9 텍스트를 위한 인공 신경망 ③ LSTM과 GRU 셀로 훈련 순환 신경망에서 빼놓을 수 없는 핵심 기술인 LSTM과 GRU 셀을 사용한 모델을 만들어보자 ▶ LSTM 신경망 훈련하기 LSTM 셀 타임스텝이 긴 데이터를 효과적으로 학습하기 위해 고안된 순환층 입력 게이트, 삭제 게이트, 출력 게이트 역할을 하는 작은 셀이 포함되어 있음 은닉 상태 외에 셀 상태를 출력함 - 셀 상태는 다음 층으로 전달되지 않으며 현재 셀에서만 순환됨 먼저 이전 절처럼 IMDB 리뷰 데이터를 로드하고 샘플의 길이를 100으로 맞춰주자 from tensorflow.keras.datasets import imdb from sklearn.model_selecti..

[DL] 09-2 순환 신경망으로 IMDB 리뷰 분류하기 (+ 09-1)

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH9 텍스트를 위한 인공 신경망 ①② 케라스 API로 순환 신경망 구현하기 텐서플로를 사용해 순환 신경망을 만들어 영화 리뷰 데이터셋에 적용해 리뷰를 긍정과 부정으로 분류해보자 ▶ 09-1장 순환 신경망의 개념을 설명한 단원이라 키워드만 정리하고 넘어가겠습니다 순차 데이터 텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터 대표적으로 글, 대화, 일자별 날씨, 일자별 판매 실적 등을 예로 들 수 있음 순환 신경망 순차 데이터에 잘 맞는 인공 신경망의 한 종류 순차 데이터를 처리하기 위해 고안된 순환층을 1개 이상 사용한 신경망 순환 신경망에서는 종종 순환층을 셀이라 부름 - 하나의 셀은 여러 개의 뉴런으로 구성 순환 신경망에서는 셀의..

[DL] 08-3 합성곱 신경망의 시각화

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH8 이미지를 위한 인공 신경망 ③ 시각화로 이해하는 합성곱 신경망 합성곱 층의 가중치와 특성 맵을 시각화하여 신경망이 이미지에서 어떤 것을 학습하는지 이해해보자 이 전 절의 코드에 이어서 실행했습니다. ▶ 가중치 시각화 08-2에서 만들었던 모델이 어떤 가중치를 학습했는지 확인하기 위해 체크포인트 파일을 읽고 확인해보자 from tensorflow import keras model = keras.models.load_model('best-cnn-model.h5') # 케라스에 추가한 층 확인 model.layers 케라스 모델에 추가한 층은 layers 속성에 저장되어 있다. Conv2D, MaxPooling2D 층이 번갈아 2번, Fl..

[DL] 08-2 합성곱 신경망을 사용한 이미지 분류 (+ 08-1)

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH8 이미지를 위한 인공 신경망 ①② 케라스 API로 합성곱 신경망 구현하기 케라스 API를 사용해 합성곱 신경망 모델을 만들어 패션 MNIST 이미지를 분류해보자 ▶ 08-1장 합성곱 신경망의 개념을 설명한 단원이라 키워드만 정리하고 넘어가겠습니다 합성곱 밀집층과 비슷하게 입력과 가중치를 곱하고 절편을 더하는 선형 계산 밀집층과 달리 각 합성곱은 입력 전체가 아닌 일부만 사용하여 선형 계산을 수행함 합성곱 층의 필터는 밀집층의 뉴런에 해당 (필터의 가중치와 절편을 종종 커널이라고 부름) 자주 사용되는 커널의 크기는 (3, 3) 또는 (5, 5), 커널의 깊이는 입력의 깊이와 같음 특성 맵 합성곱 층이나 풀링 층의 출력 배열을 의미 필터 ..

[DL] 07-3 신경망 모델 훈련

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH7 딥러닝 시작 ③ 최상의 신경망 모델 얻기 케라스 API를 사용해 모델을 훈련하는데 필요한 다양한 도구들을 알아보자 ▶ 손실 곡선 먼저, 패션 MNIST 데이터셋을 불러와 훈련 세트와 검증 세트로 나누자 from tensorflow import keras from sklearn.model_selection import train_test_split (train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data() train_scaled = train_input / 255.0 train_scaled, val_scaled, trai..

[DL] 07-2 심층 신경망

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH7 딥러닝 시작 ② 케라스 API를 활용한 심층 신경망 인공 신경망에 층을 여러 개 추가하여 패션 MNIST 데이터셋을 분류하면서 케라스로 심층 신경망을 만드는 법을 자세히 배워보자 ▶ 2개의 층 먼저, 데이터셋을 먼저 불러오자 from tensorflow import keras (train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data() 7-1장에서 했던 것을 똑같이 해보자 from sklearn.model_selection import train_test_split train_scaled = train_input / 25..

[DL] 07-1 인공 신경망

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH7 딥러닝 시작 ① 인공 신경망 모델로 성능 향상 딥러닝과 인공 신경망 알고리즘을 이해하고 텐서플로를 사용해 간단한 인공 신경망 모델 만들어보기 ▶ 패션 MNIST 텐서플로의 케라스 패키지를 import하고 패션 MNIST 데이터를 다운로드하자 from tensorflow import keras (train_input, train_target), (test_input, test_target) = \ keras.datasets.fashion_mnist.load_data() keras.datasets.fashion_mnist 모듈 아래 load_data()는 훈련 데이터와 테스트 데이터를 나누어 반환해준다. 이 데이터의 크기를 확인해보자 p..

[ML] 06-3 주성분 분석

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH6 비지도 학습 ③ 주성분 분석으로 차원 축소 차원 축소에 대해 이해하고 대표적인 차원 축소 알고리즘 중 하나인 PCA(주성분 분석) 모델을 만들어보자 ▶ 차원과 주성분 분석 차원 축소 원본 데이터의 특성을 적은 수의 새로운 특성으로 변환하는 비지도 학습의 한 종류이다. 차원 축소는 저장 공간을 줄이고 시각화하기 쉽다. 다른 알고리즘의 성능을 높일 수도 있다. 대표적인 차원 축소 알고리즘은 주성분 분석 (PCA) 주성분 분석 차원 축소 알고리즘의 하나로 데이터에서 가장 분산이 큰 방향을 찾는 방법 (주성분) 원본 데이터를 주성분에 투영하여 새로운 특성을 만들 수 있다. 일반적으로 주성분은 원본 데이터에 있는 특성 개수보다 작다. ▶ PC..

[ML] 06-2 k-평균 알고리즘

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH6 비지도 학습 ② 과일을 자동으로 분류하기 k-평균 알고리즘의 작동 방식을 이해하고 타깃값을 모를 때 과일 사진을 자동으로 모으는 비지도 학습 모델을 만들어보자 ▶ K-평균 알고리즘 소개 무작위로 k개의 클러스터 중심을 정한다 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다 클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복한다 k-평균 알고리즘은 처음에는 랜덤하게 클러스터 중심을 선택하고 점차 가까운 샘플의 중심으로 이동하는 알고리즘이다 클러스터 중심 k-평균 알고리즘이 만든 클러스터에 속한 샘플의 특성 평균값 센트로이드라고도 부름 가장 가..

[ML] 06-1 군집 알고리즘

혼자 공부하는 머신러닝+딥러닝 책을 바탕으로 공부한 내용입니다. CH6 비지도 학습 ① 비슷한 샘플끼리 모으기 흑백 사진을 분류하기 위해 여러 가지 아이디어를 내면서 비지도 학습과 군집 알고리즘에 대해 이해하자 해야 할 일 : 여러 과일 사진을 같은 과일끼리 분류하기 ▶ 과일 사진 데이터 준비하기 타깃이 없을 때 사용하는 머신러닝 알고리즘은 비지도 학습이다. 사과, 바나나, 파인애플이 각각 100개씩 들어있는 데이터로 군집 알고리즘을 사용해보자 # 과일 사진 데이터 불러오기 import wget url = "https://bit.ly/fruits_300_data" wget.download(url) import numpy as np import matplotlib.pyplot as plt fruits = ..