전체 글 40

TensorFlow batch,window 메서드

시계열 데이터를 다룰때 사용하는 메서드입니다. Batch 사용하기 range_ds = tf.data.Dataset.range(10000) # Using Batch batches = range_ds.batch(10,drop_remainder=True) for batch in batches.take(5): print(batch.numpy()) # Outputs [0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 28 29] [30 31 32 33 34 35 36 37 38 39] [40 41 42 43 44 45 46 47 48 49] 한 단계 앞선 데이터를 예측하기 위한 메서드 입니다 def dense_1_step(b..

RNN,LSTM,GRU에 대해서 알아보자

시작에 앞서... 우리는 일상생활에서 미래를 예측합니다. 예를들어, 친구의 말을 대신 마무리하거나, 음식 냄새를 예상하는 것처럼 말이죠 이 장에서는 미래를 예측할 수 있는 네트워크인 순환 신경망에 대해서 알아보겠습니다. 순환 신경망(Recurrent Neural Network, RNN) 이란? 순환신경망은 시계열(time series) 데이터를 분석해서 주식가격 같은 것을 에측하고 언제 사고 팔지 알려줄 수도 있고, 자율주행 시스템에서는 차의 이동경로를 에측하고 사고를 피하도록 도울 수 있습니다. 일반적으로 이 신경망은 지금까지 봤던 모든 네트워크처럼 고정 길이 입력이 아닌 임의 길이를 가진 시퀀스를 다룰 수 있는데, 문장,문서,오디오 샘플 등이 예시입니다. RNN은 자동 번역, 스피치 투 텍스트와 같은..

고양이와 개 이미지 분류하기

https://www.kaggle.com/competitions/dogs-vs-cats/data Dogs vs. Cats | Kaggle www.kaggle.com 핸즈 온 머신러닝2에서 14강인 CNN(Convoltuional Neural Network)를 공부하고 나서 배웠던 것을 써먹을 만한것이 없을까 하다가 캐글의 개와 고양이 사진을 분류하는 모델을 만들어보면서 부족한 부분을 다시 정리하고자 합니다. 인간은 고양이와 개를 분류하기 정말 쉽습니다. 그냥 바로 마주치면 아니까... 하지만 컴퓨터는 그렇지 않습니다. 컴퓨터는 인간과 같이 데이터를 파악하는것이 아니라 자신만의 룰을 만들어가면서 분류하기 때문입니다. DataSet은 위의 Kaggle 사이트에 들어가서 다운받을 수 있습니다. IMPORT M..

Kaggle 2022.04.28

TensorFlow Protocol Buffer

Protocol Buffer CSV,XML,JSON등 여러 직렬화 방식 중 하나로 구글에서 개발한 이진 직렬화 방식 직렬화(Serialization)란 직렬화란 시스템 내부에서 사용하는 개체를 다른 시스템에서도 사용할 수 있도록 바이트 형태로 데이터를 변환하는 기술을 뜻한다. 예를들면 Java,Python에서 사용하던 객체 방식과 Node.js에서는 형식이 다르기 때문에 모두가 같은 데이터를 사용하도록 공통화 작업을 한다고 생각하면 된다 ProtoBuf 사용순서 protoBuf 포맷으로 데이터 구조를 정의 컴파일하기(각 타겟 언어별 protoc 컴파일러 사용) 컴파일된 모듈 각 언어에서 코드레벨로 로드하기 ProtoBuf 파일 생성 %%writefile person.proto syntax = "proto..

규제를 사용해 과대적합 피하기

l1,l2규제 드롭아웃 앞선 글에서 배치 정규화를 통해 불안정한 그레이디언트 문제를 해결방안을 제시했습니다 이번 글에서는 신경망에서 널리 사용되는 다른 규제방법을 알아보겠습니다 L1,L2 규제 https://peaco.tistory.com/26?category=1253919 선형회귀(GD,Ridge,Lasso,ElasticNet) 선형회귀 및 경사하강법(배치 경사하강법, 미니배치 경사하강법, 경사하강법) 다항회귀 규제가 있는 선형 모델 선형회귀 입력 특성의 가중치 합과 편향 이라는 상수를 더해 예측을 만든다. y는 peaco.tistory.com 선형회귀에서 다루었던 것처럼 신경망의 연결 가중치를 제한하기위해 l2 규제를 사용하거나 (많은 가중치가 0인)희소모델을 만들기 위해 l1 규제를 사용했습니다. ..

배치 정규화

그래디언트 소실과 폭주 배치 정규화 그레이디언트 소실과 폭주문제 역전파 알고리즘은 출력층에서 입력층으로 오차 그레이디언틀르 전파하면서 진행합니다. 이때 알고리즘이 신경망의 모든 파라미터에 대한 오차 함수의 그레이디언트를 계산하면 경사 하강법 단계에서 이 그레이디언트를 사용하여 각 파라미터를 수정하게 됩니다. 그런데 알고리즘이 하위층으로 진행될수록 그레이디언트가 점점 작아지는 경우가 많아지는데, 경사 하강법이 하위층의 연결 가중치를 변경되지 않은 채로 둔다면 안타깝게도 훈련이 좋은 솔루션으로 수렴되지 않을 것 입니다. 이 문제를 그레이디언트 소실(vanishing gradient) 라고합니다. 위와 반대로 그레이디언트가 점점 커져서 여러 층이 비정상적으로 큰 가중치로 갱신되면 알고리즘은 발산합니다. 이 문..

케라스를 이용한 인공 신경망 만들기(하이퍼파라미터 튜닝)

신경망은 유연하다는 장점과 동시에 단점이 존재한다. 신경망의 유연성은 조정할 하이퍼파라미터가 많아진다는 단점이 존재한다. 아주 복잡한 네트워크 구조에서뿐만 아니라 간단한 다층 퍼셉트론에서도 조차 층의 개수, 층마다있는 뉴런의 개수, 각 층에서 사용하는 활성화 함수, 가중치 초기화 전략등 바꿀수 있는것이 매우많습니다.이때 어떤 하이퍼파라미터 조합이 문제의 최적인지 알수 있을까요? 이때 한가지 방법은 많은 하이퍼파라미터 조합을 시도해보고 어떤것이 검증 세트에서 가장 좋은 점수를 내는지 확인 해보는것입니다. GridSearchCV , RandomizedSearchCV를 통해 하이퍼 파라미터 공간을 탐색할 수 있습니다 이때, 케라스 모델을 사이킷런 추정기 처럼 보이도록 꾸며야 하는데, keras.wrappers..

케라스를 이용한 이미지 분류기 만들기

케라스란? 케라스는 모든 종류의 신경망을 손쉽게 만들고 훈련, 평가, 실행할 수 있는 고수준 딥러닝 API import tensorflow as tf import tensorflow import keras import numpy as np import pandas as pd import matplotlib.pyplot as plt 데이터셋을 적재(픽셀 강도는 0~255 바이트로 표현되어있습니다) (X_train_full, y_train_full), (X_test,y_test) = keras.datasets.mnist.load_data() X_train_full.shape # (60000,28,28) X_train_full.dtype # dtype('uint8') 전체 훈련 세트를 검증 세트와 더 작은 훈..

K-Means Clustering(K 평균 군집화) 정리

오늘날 대부분의 머신러닝 애플리케이션이 지도학습 기반이지만, 사용할 수 있는 데이터는 대부분 레이블이 존재하지 않습니다. 이러한 레이블이 없는 데이터에 숨겨진 패턴을 찾아내고 구조화하는 머신러닝 기법을 비지도학습(Unsupervised Learning)이라고 하는데, 비지도학습 알고리즘 중 가장 널리알려진 K-Means Clustering 알고리즘에 대해서 알아보겠습니다. 군집은 다음과 같은 다양한 애플리케이션에서 사용됩니다. 고객분류 데이터분석 차원 축소 기법 이상치 탐색 준지도 학습 검색 엔진 이미지 분할 등.. K-Means Clustering "K"는 주어진 데이터로부터 그룹화 할 그룹의 개수, 즉 클러스터의 개수 "Means"는 각 클러스터의 중심과 데이터들의 평균거리를 의미 센트로이드(cent..

주성분 분석(PCA)란?

차원의 저주란? 많은 경우 머신러닝 문제는 훈련 샘플이 각각 수천 심지어 수백만 개의 특성(Feature)을 가지고 있습니다. 이런 많은 특성은 훈련을 느리게 할 뿐만 아니라, 좋은 솔루션을 찾기 어렵게 만듭니다. 이런 문제를 차원의 저주(curse of dimensionality) 라고합니다. 이러한 문제를 해결하기 위해서는 차원을 줄여줘야 하는데, 이때 사용하는 방식이 PCA라는 차원축소 알고리즘 입니다. PCA는 비지도 변수 추출(Principal Component analysis) 비지도이므로 target 값 y는 사용되지 않는다. ▷ PCA,주성분 분석 분산을 최대로 유지하자! 가 핵심입니다. 사진을 보면 데이터 x1,x2의 분포 사진에 2개의 축이있습니다.(c1,c2) c1에 데이터를 사영(P..

1 2 3 4