TIL
📌
오늘 한 일
딥러닝 3주 차 강의 듣기
장고 원격강의 듣기
거북이 반 수업
오늘도 어제처럼 딥러닝 3주 차 듣고 남은 시간에 4주 차를 조금 더 들었다.
딥러닝 3주차 숙제도 실습에서 한 거랑 똑같이 하면 잘 풀려서 강의 진도를
나가는데 문제가 없었다.
강의를 듣고 장고 원격강의를 들었다.
강의를 듣던 중 매니저님께서 오셔서 프론트엔드를 희망하는지 나에게 물어봤다.
난 프론트엔드 희망한다고 대답했다. 어떻게 아셨는지 여쭤보니
설문조사를 보고 오셨다고 했다. 매니저님도 캠프를 수료하셨는데
캠프에서 프론트엔드가 재미있어서 프론트엔드 쪽으로 가셨다고 하셨다.
그래서 내가 앞으로 프론트엔드 쪽으로 어떻게 공부해야 할지 알려주시고
어떤 것들을 공부해야 할지 알려주셨다.
1. 미디어쿼리 2. 자바스크립트 3.리엑트
앞으로 시간 날 때마다 위 순서로 공부할 예정이다.
백엔드 공부와 프론트엔드 공부에 방향성이 안잡혔었는데
매니저님께서 지도해주셔서 방향성이 잡혔다.
매니저님과 대화 후 저녁을 먹고
거북이 반 수업을 들었다.
오늘은 회원가입과 models.py를 배웠는데
둘 다 잘하지 못하는 나에겐 너무 유익한 시간이었다.
수업을 듣고 바로 복습을 했다. 메모장에 흐름과 어떤 식으로 이해를 했는지 적었다.
적은 내용이 맞는지 튜터님께 확인을 받고 피드백까지 받았다.
나는 그날 배운 내용을 복습으로 메모장에 적는 것이 나에게 도움이 많이 된다.
메모장에 적으면 다음에 사용할 때 '어떻게 했더라'가 아니라 바로바로 메모장을 꺼내보면서
그날 배웠던 내용을 기억할 수 있어서 도움이 된다.
지금도 장고나 깃허브 사용할 때 모를 때마다 적어놨던 것들을 보면서 한다.
조금 귀찮지만 하면 진짜 도움이 많이 된다.
딥러닝 3주 차
- 딥러닝이란?
딥 러닝은 머신 러닝의 한 분야
딥 러닝은 인간의 뇌가 작동하는 방식을 기반으로 인공 신경망오가 계층을 생성한다.
딥 러닝은 우리 생활의 예를 통해 우리 인간들이 쉽고 자연스럽게 하는 일을
컴퓨터에 가르치는 머신 러닝 기술이다.
- Deep neural networks 구성 방법
딥러닝 네트워크(MLP)는 여러 층을 쌓아 구성한다.
딥러닝에서 네트워크의 구조 3가지
1. input layer(입력층) :
네트워크의 입력 부분. 우리가 학습시키고 싶은 x값
2. Output layer(출력층) :
네트워크의 출력 부분. 우리가 예측한 값, 즉 y값
3. Hidden layers(은닉층) :
입력층과 출력층을 제외한 중간층
문제에 따라 입력층과 출력층의 모양은 정해져 있고,
신경 써야 할 부분은 은닉층이다.
보편적으로 노드의 개수가 점점 늘어나다가 줄어드는 방식으로 많이 구성된다. 마름모 모양처럼
네트워크의 width(너비)와 depth(깊이)
Baseline model(베이스라인 모델) :
적당한 연산량을 가진, 적당한 정확도의 딥러닝 모델(기준이 되는 모델)
베이스라인 모델로 많은 실험을 함
1. 네트워크의 너비를 늘리는 방법
- 은닉층의 개수를 그대로 두고 은닉층의 노드 개수를 늘리는 방법
2. 깊이를 늘리는 방법
- 너트워크의 은닉층의 개수를 늘리는 방법
3. 너비와 깊이를 전부 늘리는 방법
- 1,2번 두 가지 방법을 다 사용
- 딥러닝 주요 개념
batch :
데이터셋을 작은 단위로 쪼개서 학습을 시키는데 쪼개는 단위를 말함
ex) 1000만개의 데이터셋을 1000개씩 쪼개어 10000번을 반복
iteration :
위에서 10000번 반복하는 과정을 이터레이션이라고 함
epoch :
보통 머신러닝에서는 똑같은 데이터셋을 가지고 반복 학습을 한다.
이 과정은 우리가 수능시험을 대비해서 모의고사 문제를 여러 번 풀어보는 과정하고 비슷하다.
만약 100번 반복 학습을 한다면 100 epochs(에폭)을 반복한다고 한다.
데이터셋을 한 번 돌 때 한 epoch가 끝남
Activation functions(활성화 함수) :
어떤 신호가 임계치(threshold)를 넘어야만 다음 노드로 넘어간다 라는 것이 활성화 함수다.
활성화 함수는 비선형함수여야 한다. 대표적인 예가 시그모이드 함수
활성화 함수 종류 :
Overfitting(과적합) :
딥러닝 모델을 설계/튜징하고 학습시키다 보면 가끔 Traaining loss는 점점 낮아지는데
Validation loss가 높아지는 시점이 있다. 이 현상을 고적합 현상이라고 한다.
Underfitting(과소적합) :
반대로 풀어야 하는 문제의 난이도에 비해 모델의 복잡도가 낮을 경우
문제를 제대로 풀지 못하는 현상을 과소적합이라고 한다.
따라서 적당한 복잡도를 가진 모델을 찾아야 하고
수십 번의 튜닝 과정을 거쳐 최적합(Best fit)의 모델을 찾아야 한다.
- 딥러닝의 주요 스킬
Data augmentation(데이터 증강기법) :
데이터 증강기법은 이미지 처리 분야의 딥러닝에서 주로 사용
원본 이미지 한 장을 여러 가지 방법으로 복사한다.
사람의 눈으로 보았을 때 어떤 사진을 보아도 원본 사진인 것처럼
딥러닝 모델도 똑같이 보도록 학습시킨다.
Dropout(드롭아웃) :
과적합을 해결할 수 있는 가장 간단한 방법
각 노드들이 이어진 선을 빼서 없애버린다는 의미
Ensemble(앙상블) :
여러 개의 딥러닝 모델을 만들어 각각 학습시킨 후 각각의 모델에서 나온
출력을 기반으로 투표를 하는 방법
Learning rate decay(Learning rate schedules) :
Local minimum에 빠르게 도달하고 싶을 때 사용
Kearas에서는
tf.keras.callbacks.LearningRateScheduler() 와
tf.keras.callbacks.ReduceLROnPlateau() 를 사용하여
학습 중 Learning rate를 조절합니다.
거북이 반
- models.py 작성과 admin 계정 만들기, admin페이지 접속
1. users/models.py에
from django.contrib.auth.models import AbstractUser #임포트 해주고
class User(AbstractUser):
profile = models.TextField(max_length=500, blank=True) #작성
2. 그리고 settings.py에
AUTH_USER_MODEL = 'users.User' #추가하여 class User를 사용하는 것을 알려줌
3. models.py에 모델 필드를 작성했다면
python manage.py makemigrations
python manage.py migrate
이 둘을 작성해줌
4. admin 페이지에서 확인하기 위해서
python manage.py createsuperuser 해주고
users/admin.py 에 와서 admin페이지와 연결해주기
from django.contrib.auth.admin import UserAdmin #임포트
from .models import User #임포트
admin.site.register(User, UserAdmin)
=======================
- 회원가입 만들기
1. django_project/urls.py 에서
users앱에 urls.py 경로를 include 해준다.
from django.urls import path,include #include 임포트
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')), #추가된 부분
]
2. users앱에 urls.py를 만들어줌
그 안에 아래와 같이 작성해줌(잘 모를 시 django_project/urls.py 참고하기)
from users import views #views.py를 사용하기 위해 임포트
app_name = 'users' #앱의 url name
urlpatterns = [
path('signup/',views.signup, name='signup'),
]
3. users앱에 templates 폴더를 만들어준 후 signup.html을 만들어준다
그 안에 간단하게 회원가입 틀 작성
<form action="{% url 'users:signup' %}" method="POST">
#method는 보내는 방식 GET or POST
#action은 데이터에 목적지를 작성
{% csrf_token %} #보안을 위한 토큰
<input type="text" name="username" placeholder="username" id="username" class="username"/>
#name은 키값 같은 역할
<input type="password" name="password" placeholder="password"/>
<input type="password" name="passwordcheck" placeholder="passwordcheck"/>
<input type="submit"/>
</form>
4. users/views.py 에서
from django.shortcuts import render #render를 사용하니 임포트
from django.http import HttpResponse
from .models import User #해당 경로에 있는 models파일에 User 임포트
# Create your views here.
def signup(request):
if request.method == 'GET': #만약 요청이 GET으로 올 시에
return render(request, 'signup.html') #render를 통해 signup.html을 보여줄게
elif request.method == 'POST': #요청이 POST라면
username = request.POST.get('username') #POST로 온 request안에 있는 데이터 중 키값이 username인것
password = request.POST.get('password') #POST로 온 request안에 있는 데이터 중 키값이 password인것
passwordcheck = request.POST.get('passwordcheck') # POST로온 request안에 있는 데이터 중 키값이 passwordcheck인 것
if password == passwordcheck: #만약 password가 passwordcheck와 같다면
User.objects.create_user(username = username, password=password) # User 새로 만드는데 username은 username으로 password는 password로 만들어준다.
return HttpResponse('회원가입 완료')
else:
return HttpResponse('회원가입 실패')
else:
return HttpResponse('허용되지 않은 메소드')
'내일배움캠프' 카테고리의 다른 글
39. 내일배움캠프 - 30일차 TIL (0) | 2022.10.14 |
---|---|
38. 내일배움캠프 - 29일차 TIL(딥러닝 4주차, 거북이반 day3) (0) | 2022.10.13 |
36. 내일배움캠프 - 27일차 TIL(딥러닝 2주차, 거북이반day1) (3) | 2022.10.11 |
35. 내일배움캠프 -6주차 WIL (0) | 2022.10.10 |
34. 내일배움캠프 - 26일차 TIL (1) | 2022.10.07 |
댓글