본문 바로가기
반응형

전체 글83

문자열 다루기 - 옹알이(1) 문제 1) 문자열 & 완전탐색 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. - 1 ≤ babbling의 길이 ≤ 100 - 1 ≤ babbling[i]의 길이 ≤ 15 - babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.   즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다... 2024. 8. 13.
A Note on Python/Numpy Vectors 파이썬의 브로드 캐스팅, 더 일반적으로 말해서 NumPy를 사용한 파이썬 프로그래밍의 유연성은 프로그래밍 언어의 장점과 단점 모두 될 수 있다고 생각한다. 장점으로 언어의 넓은 표현성과 유연성은 한 줄의 코드로도 많은 걸 할 수 있게 해주고, 단점으로 브로드 캐스팅의 유연성은 자세한 내용과 작동 방법을 모른다면 이상하고 찾기 힘든 오류가 생긴다. 예를 들어, 행 벡터와 열 벡터를 더한다면 차원 오류나 형 오류가 생길 거라고 생각하겠지만, 두 벡터의 합인 행렬이 나올 수도 있다. 이 결과는 파이썬 내부 논리로 처리되지만, 파이썬에 익숙하지 않다면 이상하고 찾기 어려운 오류들이 생긴다. 해당 강의에서 확인하고자 하는 것은 코드를 간단하게 하거나, 이상한 오류들을 없애줬던 NumPy를 써보려고 한다. a.sh.. 2024. 3. 26.
Broadcasting in Python 브로드 캐스팅은 파이썬 코드 실행 시간을 줄일 수 있는 또다른 기법에 해당된다. 파이썬의 브로드 캐스팅의 작동 방법에 대해 알아보고자 한다. 예시 1) 아래 이미지 내에서 행렬은 네 가지 다른 음식 100g 당 탄수화물, 단백질, 지방이 가지는 칼로리를 보여준다. 이에 목적은 각 네 가지 음식의 각 영양소가 주는 칼로리의 백분율을 구하는 것이라고 한다. (1) 각 열을 더하면, 각 음식의 총 칼로리를 알 수 있다. axis=0 라는 매개변수는 파이썬에서 세로로 더하라는 뜻이다. 가로축은 axis=1 (2) A/cal.reshape(1,4) 부분은 브로드 캐스팅의 한 예에 해당된다. (3,4) 행렬인 A를 (1,4) 행렬로 나누는 것이다. 물론, cal 코드를 실행한 이후에는 변수 cal은 이미 (1,4).. 2024. 3. 26.
Vectorizing Logistic Regression's Gradient Computation 지난 영상에 이어, m개의 훈련 샘플에 대한 for문이 남아있다. 이 연산을 벡터화하고자 한다. db에 대한 벡터화 구현을 살펴보면, 모든 dz를 더하고 m으로 나눠주는 것이다. db는 i가 1부터 m까지일 때, dz(i)의 합을 m으로 나눈 값이다. 여기서 모든 dz는 열 벡터이다. 파이썬에서는 1/m에 np.sum(dZ)라고 한다. 단순히, dZ를 가지고 이 함수를 호출하면 db를 반환한다. dw는 1/m에 X dZ^T를 곱한 값이 된다. 그 이유를 살펴보면, 이 값은 1/m에 x^(1)부터 x^(m)이 가로로 쌓인 행렬 X를 곱하고, dZ^T는 dz^(1)부터 dz^(m)까지의 벡터가 된다. 이 행렬과 벡터를 곱하면, 1/m에 x^(1) dz^(1) 부터 x^(m) dz^(m)을 모두 더한 값을 곱.. 2024. 3. 26.
반응형