목록프로그래밍 책 (9)
열심히 코딩 하숭!
12 사용자 정의 데이터를 활용한 이미지 분류12.1 문제 정의하기개미와 벌 분류 문제훈련 데이터 244개검증 데이터 153개JPEG 형식다중 분류로 진행시베리안 허스키와 늑대 분류 문제훈련 데이터 40건검증 데이터 10건12.3 데이터 준비데이터 다운로드, 압축 해제, 트리 구조 출력파이썬 함수 말고 리눅스 커맨드를 사용!다운로드: wget압축 해제: unzip트리 구조 출력: treetree 커맨드의 경우 (구글 코랩에 기반하는 OS에 포함되어 있지 않으므로) 일단 apt 커맨드를 통해 tree 커맨드를 도입한 다음 사용한다tree 커맨드 install!pip install torchviz | tail -n 1!pip install torchviz | tail -n 1 w = !apt install ..
11 사전 학습 모델 활용하기11.2 사전 학습 모델사전 학습 모델실제 실무에서는 학습을 밑바닥부터 시작하는 경우는 오히려 드물다미리 학습이 되어있는 사전 학습 모델을 활용하여 정확도가 더욱 높은 모델을 만든다파이토치에서 이미지 분류 모델로 사용 가능한 사전 학습 모델아래의 모델들은 모두 224 x 224 화소의 이미지 데이터로 학습되었음클래스명: 파이토치에서 실제 모델을 읽어올 때 사용하는 클래스명Top-1 에러: ILSVRC에서 과제를 위해 공개한 ImageNet이라는 1000개의 클래스를 분류하는 문제에서 검증에 대한 에러 비율Top-5에러: 정답이 모델의 예측 결과의 Top-5 안에 들지 못한 비율 사전 학습 모델 호출 예시from torchvision import modelsnet = model..
10 튜닝 기법 10.1 이 장의 중요 개념 이미지 대상 딥러닝 분류 모델의 튜닝 기법 (1) 신경망의 다층화 (2) 최적화 함수를 개선 (3) 과학습에 관한 대책 10.3 최적화 함수 최적화 함수 손실의 경사 값을 기반으로 어떤 알고리즘을 통해 파라미터를 수정해 나갈 것인지 SGD Stochastic Gradient Descent 경사에 일정한 학습률을 곱해서 파라미터를 수정해 나가는 방식 lr = 0.001 # 학습률 w -= lr * W.grad B -= lr * B.grad Momentum SGD 알고리즘을 개선하기 위해 나온 방법 모멘텀 인수를 설정하여, 과거에 계산했던 경사 값을 기억했다가, 그만큼 파라미터를 일정 비율 감소시킴 (SGD의 경우 현재 경사 값만 반영함) optimizer = o..
09 CNN을 활용한 이미지 인식 9.1 문제 정의 CIFAR-10 32 x 32 화소의 컬러 이미지 데이터 이미지를 학습하여 해당하는 이미지의 카테고리를 예측 컬러이므로 → (3, 32, 32) 🌟채널🌟 이미지 → ‘색, 가로, 세로’의 3계 텐서의 구조를 유지 (여기에서 ‘색’이 채널!) RGB라면 채널은 3 흑백 등 단일 색상일 경우 채널은 1 두번째 층 이후에서는 ‘색’에 해당하는 인덱스는 더 이상 색의 의미를 갖지 않게 된다 ⇒ 학습하면서 다른 특징에 초점을 맞출 수 있기 때문 이렇게 깊이에 해당하는 인덱스는 ‘채널’이라고 불림 📌 채널이 4개 이상일 경우? → 다중 모달 데이터 (자연어처리) → 시간 차원 (비디오) → 3D 이미지 → 특징 추출: 일부 심층 학습 아키텍처에서는 채널 수를 증가..
08 MNIST를 활용한 숫자 인식 8.1 문제 정의 MNIST 데이터 손글씨 데이터 가로 세로 28 x 28 (pixel) 색의 농도는 0 ~ 225까지 데이터 사용 이미지 한 장은 [1, 28, 28] 형태로 구성되어있음 (맨 처음 1은 이미지의 색을 의미하는 채널의 차원수 - 그니까 2차원의 데이터인데 색이 붙어서 3차원…!!!이 된!!!) 이번 장에서는 1계 텐서 형식으로 입력 데이터를 변환하여 사용 이미지 한 장 → 784개(28 X 28)의 요소를 1차원 배열로 전개 class 0 ~ 9까지의 숫자를 분류 → 총 10개의 class 8.2-8.3 중요 개념 / 신경망과 딥러닝 pass 8.4 활성화 함수와 ReLU 함수 ReLU 함수 x
04 예측 함수 정의하기 4.1 머신러닝 알고리의 전체상과 예측함수 경사 하강법의 구현 개요 예측 계산 → 손실 계산 → 경사 계산 → 파라미터 수정 예측 계산: 입력으로부터 출력을 계산함l 손실 계산: 정답과 출력간의 오차를 계산함 경사 계산: 손실 함수를 미분하여 경사값을 구함 파라미터 수정: 경사값을 활용해 손실을 최소화시키는 W와 B를 반복 수정함 예측 함수 구성 레이어 함수 여러 층을 조합해서 예측 함수를 구성한다 레이어 함수: 선형 함수, ReLU 함수 등 4.2 신경망의 개념과 파이토치 프로그래밍 모델의 관계 신경망과 파이토치 프로그램의 대응 관계 💡 헷갈리는 부분: 선형 함수의 자리와 비선형 함수의 자리가 고정되어야 하는지? 선형 함수 자리에는 무조건 선형 함수만 와야하나!!? 아니다! 컨..
3. 처음 시작하는 머신러닝 3.3~4 경사 하강법 이해하기 1) 경사 하강법 가장 작은 손실(최솟값)을 구하기 위해 손실의 경사(기울기)를 따라서 파라미터 값을 수정해 나가며 효율적으로 손실이 최소가 되는 지점을 구하는 방법 예측 계산: 예측값 Yp를 구한다 (W, B 값의 변화에 따라 예측값도 변한다) 손실 계산: Yp와 Y의 차이를 구한다 (평균 제곱 오차 MSE) 경사 계산: 예측 함수를 구성하는 W, B의 값을 조금씩 바꿔가며, 그때 변화한 손실의 정도를 살펴본다 파라미터 수정: 경삿값에 작은 정수(학습률) Ir을 곱해서, 그 값만큼 W와 B를 동시에 줄여나간다 3.4~12 경사 하강법 구현하기 1) 데이터 전처리 | 데이터 변환 | 예측 계산 # 샘플 데이터 선언 sampleData1 = np..
2. 파이토치의 기본 기능 2.2 텐서 1) 텐서(Tensor)의 개념 파이토치에의 고유 클래스로, 데이터를 표현한다 파이토치의 연산 대상 데이터는 모두 Tensor라는 고유의 형식으로 되어있어야 한다 0계 텐서(스칼라) / 1계 텐서(벡터), 2계 텐서(행렬) 2) 다양한 계수의 텐서 만들기 torch.tensor (값 대입) 뒤에 float을 붙여 강제로 float32로 변환하기 (대부분의 계산에 dtype=float32를 사용한다) (그렇지 않으면 float64로 설정되고 이는 nn.Linear 같은 부분에서 에러를 발생시킨다) r0 = torch.tensor(1.0).float() tensor 확인 print(type(r0)) # 변수 자체의 타입 확인 print(r0.dtype) # 텐서 내의 ..
차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 | 위키북스 3월달부터 개발 동아리에 들어가게 되었다! 현재까지 동아리 부원들과 함께 딥러닝 스터디를 진행하고 있다 스터디에서 " 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍" 교재를 활용하여 공부하고 있기 때문에 이에 대해 정리한 개념을 티스토리에 남기려고 한다~🙉 0. 기본적인 동작 구조 ⇒ 딥러닝 기본 구조: 실제값과 예측값의 차이인 오차를 최소로 만들기 위해 손실 함수를 최소화하는 모델 파라미터를 경사 하강법을 토대로 수정해나간다 ⇒ 파이토치: 위에서 말한 동작 구조를 다음과 같은 함수를 사용해 구현한다 💡 함수명이 새로워서 그런지, 딥러닝을 처음 공부하는 것이 아닌데 생소하게 느껴짐 어느정도 공부한 후에 해당 그림을 다시 살펴보는 것으로..