출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 사전학습 모델은 다음과 같이 나타낼 수 있다 from torchvision import models net= models.resnet18(pretrained=True) 파이토치 홈페이지에서 사용가능한 사전학습 모델들이 나와있다. 사전학습 모델을 이용해서 효율적으로 학습하는 방법으로 파인튜닝과 전이학습이 있다. 파인튜닝-> 사전학습 모델의 파라미터를 초깃값으로 사용하지만, 모든 레이어 함수를 사용해 학습한다. 전이 학습 -> 사전 학습 모델의 파라미터 중에서 입력에 가까운 부분의 레이어 함수는 모두 고정, 출력에 가까운 부분만을 학습 적응형 평균 풀링 함수(nn.AdaptiveAvgPool2d) -> 적응형 평균 풀링 함수는 이미지의 화소수에 의존..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 여기서 transforms를 이용하여 진행할 데이터 전처리는 다음과 같다. - 값의 범위를 [0,1]에서 [-1,1] 범위 안으로 조정 - 데이터 1건이 [1,28,28]인 3계 텐서를 [784]인 1계 텐서로 변환 + dataloader를 이용한 미니배치 학습법(그룹 단위로 경사 계산) -> 경사하강법의 local minimum 현상 해소 # 데이터 건수 확인 print('데이터 건수: ', len(train_set0)) # 첫번째 요소 가져오기 image, label = train_set0[0] # 데이터 타입 확인 print('입력 데이터 타입 : ', type(image)) print('정답 데이터 타입 : ', type(label)) 훈..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 이진분류 예측은 정답은 1 or 0 이어서 '확률' (nn.sigmoid) 를 이용해 정답이 어느정도 가까운지 확인했었음. 다중분류에서는 입력값 -> 예측 모델 -> 확률값으로 나온 출력값 중 확률이 가장 큰 것을 고른다. 예를들어 00으로 나올확률의 출력이 0.8/ 01로 나올 확률의 출력 0.2 / 02로 나올 확률의 출력이 0.33/ 이면, 출력값이 가장 큰 예측값으로 00을 도출하는 것이다. 이진분류에서는 가중치와 입력벡터를 내적하고, bias를 더했지만 다중분류에서는 가중치 벡터와 입력벡터를 행렬곱 연산을 하고 bias를 더해준다. 다중분류에선 softmax 함수를 사용한다. softmax는 입력값이 가장크면 확률값도 가장 크도록 출력한..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 이전 선형 회귀 모델과 비교했을 때, 이진 로지스틱 회귀 모델은 시그모이드 함수가 새롭게 추가되었다. 오버피팅이란 train data에서만 정확도가 높고, 다른 데이터에 대해서 정확도가 높지않은 것을 의미한다. 또한 오버피팅은 학습 횟수가 늘어날수록 train 데이터의 acc가 좋아지는 반면, 검증데이터의 정확도 좋아지지 않는다. 학습을 반복해도 향상되지 않는다. 검증(test) 데이터는 학습된 모델의 정확도를 평가하는 목적으로만 쓰인다. 시그모이드 함수는 항상 값이 증가하고(단조증가 함수), 0과 1사이의 값을 취하고, x=0 일때 값이 0.5, 그래프는 점 (0,0.5)기준으로 점대칭이다. sigmoid 변환값이 0.5보다 큰 경우, 예측결과..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 선형 함수 다음 레이어 함수는 2차원의 입력을 받아 3차원 텐서로 출력하는 함수이다. l3 = nn.Linear(2,3) 단일 회귀 함수는 다음과 같이 구현된다 1입력 1출력으로 표시되고 있고, bias(정수항)은 기본으로 True로 설정되어있다. torch.manual_seed(123) # 입력 :1 출력 :1 선형 함수의 정의 l1 = nn.Linear(1, 1) # 선형 함수 확인 print(l1) Linear(in_features=1, out_features=1, bias=True) for param in l1.named_parameters(): print('name: ', param[0]) print('tensor: ', param[1]..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 신경망과 파이토치 프로그램의 대응 관계는 다음과 같다. 중간 텐서는 은닉층이다. 파이토치 프로그래밍에 필요한 레이어 함수는 다음과 같다. 이중에서 파라미터를 갖는 것을 하이라이트 표시하였다. nn. Linear /선형함수/회귀 nn.Sigmoid/ 시그모이드/ 이진분류 nn.LogSoftmax/ softmax+ log / 다중분류 nn.ReLU/ ReLU 함수 nn.Conv2d/ 컨볼루션 함수/ 이미지 인식 nn. MaxPool2d/ 풀링 함수 / 이미지 인식 nn.Flatten/ 1계 텐서로 변형/ 이미지 인식 nn.Dropout/ 드롭아웃 nn.BatchNorm2d/ 배치 규격화 nn.AdaptiveAvgPool2d/ 적응형 풀링 함수 / p..
출처: 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 경사하강법 구현 방법 예측 계산, 손실 계산, 경사 계산, 파라미터 수정 4개의 단계로 진행된다. 데이터 입력 및 변환 sampleData1 = np.array([ [166, 58.7], [176.0, 75.7], [171.0, 62.1], [173.0, 70.4], [169.0,60.1] ]) print(sampleData1) 데이터를 불러와서 독립변수, 종속변수를 나눠준다 x = sampleData1[:,0] y = sampleData1[:,1] print(x) #독립변수 print(y) #종속변수 [166. 176. 171. 173. 169.] [58.7 75.7 62.1 70.4 60.1] X = x - x.mean() Y = y - y...