DL Study(20)
-
[파이썬에서 살아남는법 제 14장] 딕셔너리 삽입 순서에 의존할 때는 조심하라
※본 내용은 파이썬의 코딩 기술 (개정 2판)을 바탕으로 작성 했습니다. python 3.6이상의 버전에는 딕셔너리의 삽입 순서에 따라 저장이 되도록 된다. 과거 3.5버전이하에서는 딕셔너리의 순서에 의한 의존성이 없었다. 그로인해 순서가 뒤죽박죽 인것처럼 보였고 함수호출 디버깅이 힘들었다. # Python 3.5 def my_func(**kwargs): for key, value in kwargs.items(): print('%s = %s' % (key, value)) my_func(goose='gosling', kangaroo='joey') >>> kangaroo = joey goose = gosling def my_func(**kwargs): for key, value in kwargs.items(..
2023.02.20 -
[파이썬에서 살아남는법 제 13장] 복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라
※본 내용은 파이썬의 코딩 기술 (개정 2판)을 바탕으로 작성 했습니다. List 내장 타입에는 리스트의 원소를 여러 기준에 따라 정렬 할수 있는 sort 메서드가 있다. 기본적으로 sort 는 리스트의 내용을 [순서] 를 사용해 오름차순으로 정렬한다. numbers = [93, 86, 11, 68, 70] print(numbers.sort()) >>> [11, 68, 70, 86, 93] 또한 sort 는 문자열과 float 형등에 대해서도 잘 작동 한다. sort 가 객체를 처리 하는방법을 예제를 통해 설명 한다. class Tool: def __init__(self, name, weight): self.name = name self.weight = weight def __repr__(self): r..
2023.02.16 -
[파이썬에서 살아남는법 제 12장] 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라
※본 내용은 파이썬의 코딩 기술 (개정 2판)을 바탕으로 작성 했습니다. 기본 언패킹의 한계점은 언패킹할 시퀀스의 길이를 미리 알고 있어야 한다는것이다. 예를들어 car_ages = [0, 9, 4, 8, 7, 20, 19, 1, 6, 15] car_ages_descending = sorted(car_ages, reverse=True) oldest, second_oldest = car_ages_descending >>> Traceback ... ValueError: too many values to unpack (expected 2) 올바른 표기로는 oldest = car_ages_descending[0] second_oldest = car_ages_descending[1] others = car_age..
2023.02.15 -
[파이썬에서 살아남는법 제 11장] 스트라이드와 슬라이스를 한 식에 함께 사용하지 말라
파이썬은 리스트[시작:끝:증가값] 으로 일정한 간격을두고 슬라이싱을 할 수 있는 특별한 구문을 제공한다. 이를 스트라이드(stride) 라고 한다. 스트라이드를 사용하면 시퀀스를 슬라이싱 하면서 매 n 번째 원소만 가져올수 있다. x = ['red', 'orange', 'yellow', 'green', 'blue', 'purple'] odds = x[::2] evens = x[1::2] print(odds) print(evens) >>> ['red', 'yellow', 'blue'] ['orange', 'green', 'purple'] 하지만 스트라이드를 사용할때, 버그를 야기 할수 있다. 예를 들어 파이썬에서 바이트 문자열을 역으로 뒤집는 가장 일반적인 기법은 -1 증가값으로 문자열을 슬라이싱 하는것이..
2023.02.14 -
[파이썬에서 살아남는법 제 10장] 시퀀스를 슬라이싱하는 방법을 익혀라
※본 내용은 파이썬의 코딩 기술 (개정 2판)을 바탕으로 작성 했습니다. 파이썬에는 시퀀스를 여러조각으로 Slice(나누는) 슬라이싱 구문이 있다. 이러한 구문을 사용하면 최소의 노력으로 하위 부분집합 으로 찾아갈수 있다. 어떠한 파이썬 클래스 구문에서도 슬라이싱 구문을 추가 할수 있다. 슬라이싱 구문의 기본 형태는 리스트[시장:끝] 이다. a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] print('Middle two: ', a[3:5]) print('All but ends:', a[1:7]) >>> Middle two: ['d', 'e'] All but ends: ['b', 'c', 'd', 'e', 'f', 'g'] 시작과 끝을 모두 포함하는 인덱스를 할때는 그냥 생..
2023.02.13 -
[밑바닥 부터 시작하는 딥러닝] 6장 학습 관련 기술들
※본 내용은 밑바닥부터 시작하는 딥러닝(사이토 고키)를 바탕으로 작성 했습니다. Optimization 앞서 배운 gradient 를 활용하여 최적의 parameter 의 값을 찾는것 Momentum (모멘텀) 기존에 가지고 있는 운동량을 활용해서 Local minimum 을 빠져나오는것 즉 모멘텀 자체는 cost 의 운동량을 뜻하고 이를 활용한 optimizer 들이 많이 있다 내가 구동하는 네트워크의 특징마다 사용해야하는 optimizer 를 적절하게 설정 해야한다. Weight decay(가중치 초기화) 가중치 매개변수의 값이 작아지도록 학습하는 방법-> 오버피팅이 생기지 않음 위의 사진이 매개변수의 값이 커지면서 생기는 overfitting 이 생긴것이다. 아래사진처럼 Weight 를 조절하면서 ..
2023.01.31