목록프로그래밍/딥러닝 (10)
말랑말랑제리스타일
딥러닝 강의를 듣고 있는데 케라스의 패션 MNIST 데이터셋을 사용하기에 다른 케라스 데이터셋은 어떤 게 있는지 한번 알아봤습니다. 총 7가지 데이터셋으로 되어있으며 설명은 간단히 진행합니다. MNIST 데이터셋(손글씨 데이터) 가장 대표적인 MNIST 데이터셋으로 손글씨로 0~9까지 써둔 28*28 이미지를 훈련용 데이터셋 60,000개, 테스트용 데이터셋 10,000개로 제공합니다. from tensorflow.keras import datasets data = datasets.mnist (train_x, train_y), (test_x, test_y) = data.load_data() 이런 소스를 이용해 데이터를 끌어올 수 있습니다. 패션 MNIST 데이터셋(의류 분류용 데이터) 마찬가지로 MNIS..
딥러닝에서 모델 생성을 완료했다면 어느 정도 정확도를 내는지 성능을 평가해야 되겠죠. 총 4가지 단계를 통해서 딥러닝 ANN 모델의 성능을 평가해 봤습니다. 여기서 과적합을 판단하는 방법도 알 수 있었는데 두 번째 단락에서 과적합의 의미를 설명드리겠습니다. ANN 모델의 학습 결과 출력 이미 model.fit을 통해 결과를 확인했겠지만 이 결과를 epoch(반복 횟수) 별로 히스토리에 저장해 둘 수 있습니다. history = model.fit(train_x, train_y, epochs=50, batch_size=50, validation_data=(valid_x,valid_y)) 이렇게 model.fit의 결과를 변수에 받아볼 수 있는데요. 저는 50회 epoch를 주고 history라는 변수에 저장..
TensorFlow에서는 약 15가지 정도의 손실함수를 지원한다고 하는데요. 그 중 용도에 따라 다르게 사용할 수 있는 세가지를 알아봤습니다. 딥러닝에서 손실함수(Loss Function)란 딥러닝에서 손실 함수란 loss율을 최소화시켜주는 함수입니다. 예측 값과 실제 값을 비교해 모델을 훈련할 때 손실을 최소화시켜주는 방식이죠. Categorical Crossentropy 손실함수 먼저 TensorFlow로 케라스 Mnist 데이터셋 분류에 주로 사용되는 Categorical Crossentropy 손실함수입니다. Mnist 데이터셋은 범주를 1~9까지 사이로 분류를 하는 데이터죠. 이런 범주형 데이터의 분류에는 Categorical Crossentropy 손실함수를 사용합니다. 이 외에도 원핫 인코딩..
딥러닝 활성화 함수에는 크게 Sigmoid(시그모이드),Tanh(하이퍼블릭 탄젠트), ReLU(렐루) 세가지 함수가 있습니다. 이 중 대세는 ReLU라고 하고 자료를 찾아봐도 ReLU를 많이 사용하기에 이유를 알아봤습니다. 세가지 활성화 함수(Sigmoid, Tanh, ReLU)의 특징 일단 세가지 활성화 함수의 특징을 알아봤습니다. Sigmoid의 경우 1/(1 + e^(-z))로 값을 만들어냅니다. 그래프는 이렇게 되는데요. 0보다 작은 값이 들어가면 0에서 0.5 사이의 값이, 0보타 큰 값이 들어가면 0.5~1 사이의 값으로 대치되겠네요. 세부적으로 설명하면 무지하게 복잡하니까 이쯤 하고 넘어갑니다. 다음으로 tanh 함수의 경우 tanh(x)로 계산이 됩니다. Sigmoid 함수에 입력값을 두배..
딥러닝 실습을 위해 아나콘다 가상환경을 생성하고 생성 여부를 테스트하는 방법입니다. 먼저 이 글을 읽기에 앞서 진행되어야될 부분은 아나콘다 또는 미니콘다가 설치되어있어야 합니다. 아나콘다 가상환경 생성 먼저 아나콘다 가상환경을 생성할 폴더를 만들어줍니다. 저는 D 드라이브에 tf_test라는 폴더를 생성했습니다. 그리고 anaconda powershell promport를 실행해 줍니다. 정상적으로 아나콘다나 미니콘다가 설치되었다면 윈도우 실행 메뉴에서 anaconda라고 검색하면 나올 겁니다. 실행되었다면 해당 폴더로 이동해 줍니다. 참고로 드라이브 변경은 드라이브 명칭 뒤에 콜론을 붙여서 명령어로 입력하면 이동 가능합니다. 예를 들어 D 드라이브로 이동한다면 아래와 같이 이동해줄 수 있죠. D: 그리..
딥러닝에서 데이터 전처리를 끝냈으면 모델을 정의해야 합니다. 물론 순서를 반대로 해서 딥러닝 모델을 정의하고 전처리를 진행해도 소스 흐름에 문제는 없습니다. 딥러닝 모델이란 딥러닝은 인공 신경망에 기반을 둔 머신 러닝의 기술이죠. 그렇다면 딥러닝 모델이란 뭘까요. 딥러닝 모델은 인공 신경망의 한 종류로 여러개의 레이어를 쌓아 대량의 데이터에서 복잡한 패턴을 찾아 학습하는 데에 사용되는 모델입니다. 딥러닝 모델은 입력 층과 데이터 추출을 위한 다수의 은닉층, 출력층으로 이루어져있는데요. 각 층은 다수의 뉴런으로 구성되어있고 뉴런들은 서로 연결되어있습니다. 여기서 각 연결은 가중치를 갖고있고 이 가중치를 딥러닝 모델 학습을 통해 최적화시킬 수 있습니다. 딥러닝 모델의 예로는 이미지 분류를 위한 컨볼루션 신경..
지난 글에서 TensorFlow로 딥러닝하는 과정을 설명하고 Reshape 함수를 사용하는 이유와 과정을 설명하기 위해 텐서에 대해 알아봤는데요. 이번에는 마지막으로 카테고리 데이터를 이진 벡터로 변환하는 과정까지 다루면서 딥 러닝 테스트를 위한 데이터 전처리 과정을 마무리해 봅시다. 딥러닝에서 데이터 전처리란? 딥러닝에서 데이터 전처리는 원시 데이터를 딥러닝 모델이 처리할 수 있는 형태로 변환하는 과정을 말합니다. 즉, MNIST 데이터를 딥러닝에 사용할 수 있는 형태로 만들어주는 거죠. 예를 들면 수식 계산을 하기 위해 사과 다섯 개에 배 두 개를 더하면 총 몇 개인지를 수식으로 표현하기 위해서 사과 다섯 개는 5로, 배 두 개면 2로 더하면을 플러스 기호로 바꿔주는 겁니다. 딥러닝에서는 MNIST ..
지난 글에서 훈련 데이터에 Reshape 함수를 서서 2D 텐서인 MNIST 데이터셋을 3D 텐서로 변환한다는 표현을 썼는데요. 저도 써놓고 뭔 소린지 텐서가 뭔지 개념이 안 잡혀서 2D 텐서가 뭔지, 3D 텐서가 뭔지를 알아봤습니다. 딥러닝에서 텐서란 무엇인가 먼저 딥러닝에서의 텐서가 뭔지를 알아야 2D 텐서와 3D 텐서의 의미를 알 수 있을거라 생각하고 텐서의 개념을 알아봤습니다. 일단 물리학에서의 텐서는 지금 알아볼 내용이 아닌 것 같고 수학의 영역인 선형 대수학에서 선형 관계를 나타내는 다중 선형 대수학의 대상이라는 뜻을 찾았습니다. 도통 무슨 소리인지 알기가 힘들죠. 그래서 좀 더 쉽게 이해할 수 있는 텐서의 개념을 알아봤는데요. 쉽게 이해하려면 배열이랑 같은 느낌으로 이해해도 된다고 하더라구요..