목록딥러닝 (4)
거의 알고리즘 일기장
프로젝트 개요 VR게임상에서 그림을 그리고 그 그림을 딥러닝 모델로 판별하고 다시 VR환경에 관련 오브젝트를 띄운다. 이후, 스프레이, 색연필로 오브젝트로 색칠하여 전시하는 프로젝트. 딥러닝 (데이터셋, 모델선언, 트레이닝) Google에서 제공하는 quickdraw dataset .npy형태를 받아 선언한 resnet 모델로 트레이닝. batch : 256 10개의 카테고리의 경우 CNN RESNET34 5epoch 93% 94% 10epoch 96% 20개의 카테고리의 경우 CNN RESNET34 5epoch 85% 88% 10epoch 86% 90% 최종적으로 선택한 파라미터들 epoch : 10 model : resnet34 batch size : 256 lr : 0.1 optimizer : SG..
CNN의 필요성 이론적으로는 ANN으로도 모든 함수를 근사할 수 있다고 알고있지만, 이미지 데이터에 직접 이용해보면 성능이 좋지 않다. 그 이유는 밑의 그림을 보면 이해가 빠를것이다. 사람이 보기에는 그냥 x와 기울어진 x이지만 컴퓨터에게는 전혀 다른 input이다. 그러므로 만약에 기울어지지 않은 x의 데이터만 학습한 모델은 오른쪽과 같이 기울어진 x는 판별하기 힘들것이다. 이처럼 기본적인 ANN은 변형된 데이터에 약하다. 사실 왼쪽과 오른쪽의 이미지의 특징은 비슷하다. 밑의 그림을 보면 알수 있다. 그래서 나온게 CNN이다. 사람처럼 이런 변형된 x라도 이러한 이미지의 특징을 뽑아 훈련시켜 판별할 수 있게끔 하는 신경망이다. CNN의 연산 과정 위의 그림이 정말 잘 설명해둔 그림이다. 왼쪽의 입력 이..
주어진 데이터를 잘 설명하는 직선 하나를 찾는 일! y = w * x + b 에서 들어오는 x, y 데이터에 잘 맞는 w, b의 값을 찾는것 이를 위해서는 두가지를 먼저 알고 가야한다. 손실함수, 경사하강법 손실함수 : 모델의 예측값과 실제 값과의 오차, 주로 MSE(평균 제곱오차 사용) 경사하강법 (gradient decent) : 수식을 보면 알기 쉬운데 주어진 w에서 기울기를 구하고 그 기울기에 대해서 w를 조금씩 업데이트하면서 손실함수의 극솟값을 구하는 방식이다. (수식 : W(t+1) = W(t) - gradient(기울기) X learning rate(학습률)) (왜 w로 미분해서 그 값이 0이 되는 지점을 찾지 않고 경사하강법을 이용하냐면 데이터가 많아지면 많아질수록 연산량이 매우매우 늘어나..
www.youtube.com/watch?v=z8lK69BQ0VE&t=556s 이 영상과 케라스로 짠 코드를 보고 pytorch로 바꿔 구현해보았다. epoch : 100 batch size : 32 model : class Net(nn.Module): def __init__(self): # 가중치 초기화 super(Net, self).__init__() # sequential을 사용하면 편하게 모델 만들기 가능 self.layer1 = nn.Sequential( nn.Conv2d(1, 32, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPool2d(2), nn.Conv2d(32, 64, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPoo..