본문 바로가기

데이터/머신러닝

(13)
[혼공] ch 9. 텍스트를 위한 인공신경망 1. 순차 데이터와 순환 신경망 1) 순차 데이터  순차 데이터(sequential data) - 텍스트나 시계열 데이터(time series data)와 같이 순서에 의미가 있는 데이터 - 순차 데이터를 다룰 때는 이전에 입력한 데이터를 기억하는 기능이 필요하다.  - 합성곱 신경망이나 완전 연결 신경망과 같이 입력 데이터의 흐름이 앞으로만 전달되는 신경망을 피드포워드 신경망(feedforward neural network, FFNN)이라고 한다.   2) 순환 신경망  순환 신경망(recurrent neural network, RNN) - 순차 데이터에 잘 맞는 인공 신경망의 한 종류 - 완전 연결 신경망에 이전 데이터의 처리 흐름을 순환하는 고리 하나만 추가하면 된다.  - 뉴런의 출력이 다시 자기..
[혼공] ch 8-3 합성곱 신경망의 시각화 1. 가중치 시각화  - 합성곱 층은 여러 개의 필터를 사용해 이미지에서 특징을 학습한다. - 각 필터는 커널이라 부르는 가중치와 절편을 가지고 있다. - 가중치는 입력 이미지의 2차원 영역에 적용되어 어떤 특징을 두드러지게 표현하는 역할을 한다.   - 이 필터의 가운데 곡선 부분의 가중치 값은 높고 그 외부분의 가중치 값은 낮을 것이다. 이렇게 해야 둥근 모서리가 있는 입력과 곱해져서 큰 출력을 만들기 때문이다.  - 앞서 만든 모델이 어떤 가중치를 학습했는지 확인하기 위해 체크포인트 파일을 읽기 from tensorflow import keras# 코랩에서 실행하는 경우에는 다음 명령을 실행하여 best-cnn-model.h5 파일을 다운로드받아 사용!wget https://github.com/ri..
[혼공] ch 8-2 합성곱 신경망을 사용한 이미지 분류 1. 패션 MNIST 데이터 불러오기  - 케라스 API를 사용해 패션 MNIST 데이터를 불러오고 적절히 전처리 - 데이터 스케일을 0~255 사이에서 0~1 사이로 바꾸고 훈련 세트와 검증 세트로 나눈다. - 합성곱 신경망은 2차원 이미지를 그대로 사용하기 때문에 일렬로 펼칠 필요는 없다. - 다만, 입력 이미지는 항상 깊이(채널) 차원이 있어야 한다.   -> 흑백 이미지의 경우 채널 차원이 없는 2차원 배열이지만 Conv2D층을 사용하기 위해 마지막에 이 채널 차원을 추가해야 한다.  from tensorflow import kerasfrom sklearn.model_selection import train_test_split(train_input, train_target), (test_input..
[혼공] ch 8-1. 합성곱 신경망의 구성 요소 1. 합성곱 합성곱(convolution)- 밀집층과 비슷하게 입력과 가중치를 곱하고 절편을 더하는 선형 계산 - 1개 이상의 합성곱 층을 쓴 인공 신경망  - 인공 신경망은 처음에 가중치 w1~w10과 절편 b를 랜덤하게 초기화한 다음 에포크를 반복하면서 경사 하강법 알고리즘을 사용하여 손실이 낮아지도록 가중치와절편을 찾아간다. - 합성곱은 밀집층의 계산과는 조금 다르다. 입력 데이터 전체에 가중치를 적용하는 것이 아니라 일부에 가중치를 곱한다.  - 가중치 w1~w3이 입력의 처음 3개 특성과 곱해져 1개의 출력을 만든다 ,이 뉴런이 한 칸 아래로 이동해 두 번째부터 네 번째 특성과 곱해져 새로운 출력을 만든다.  - 첫 번째 합성곱에서 사용된 가중치 w1~w3과 절편 b가 두 번째 합성곱에도 동일하..
[혼공] ch 7-3 신경망 모델 훈련 1. 손실 곡선  - 케라스의 fit() 메서드는 History 클래스 객체를 반환 - History 객체에는 훈련 과정에서 계산한 지표, 즉 손실과 정확도 값이 저장되어 있다.  - 패션 MNIST 데이터셋을 적재하고 훈련 세트와 검증 세트로 나눈다. from tensorflow import kerasfrom 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.0train_scaled, val_scaled, train_target, ..
[혼공] ch 7-2 심층 신경망 1. 2개의 층  - 케라스 API를 사용해서 패션 MNIST 데이터셋 불러오기from tensorflow import keras(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()  - 이미지의 픽셀값을 0~255 범위에서 0~1 사이로 변환하고, 28*28 크기의 2차원 배열을 784 크기의 1차원 배열로 펼치기- 사이킷런의 train_test_split() 함수로 훈련 세트와 검증 세트로 나눔 from sklearn.model_selection import train_test_splittrain_scaled = train_input / 255.0train_scaled = trai..
[혼공] ch 7-1 인공 신경망 1. 패션 MNIST - 텐서플로의 케라스(Keras) 패키지를 임포트하고 패션 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() 함수는 훈련 데이터와 테스트 데이터를 나누어 반환  - 전달받은 데이터의 크기를 확인 print(train_input.shape, train_target.shape) - 훈련 데이터는 60,000개의 이미지로 이루어져 있고, 각 이미지는 28*28 크기이다. - 타깃도 60,000개의 원..
[혼공] ch 6. 비지도 학습 1. 군집 알고리즘  1) 타깃을 모르는 비지도 학습  비지도 학습(Unsupervised learning)- 타깃이 없을 때 사용하는 머신러닝 알고리즘  2) 과일 사진 데이터 준비하기  - 사과, 바나나, 파인애플을 담고 있는 흑백 사진- 넘파이 배열의 기본 저장 포맷인 npy 파일로 저장 !wget https://bit.ly/fruits_300_data -O fruits_300.npy - wget 명령은 원격 주소에서 데이터를 다운로드하여 저장  import numpy as npimport matplotlib.pyplot as pltfruits = np.load('fruits_300.npy')print(fruits.shape) - 넘파이에서 npy 파일을 로드하기 위해 load() 메서드에 파일 이..