목록분류 전체보기 (59)
열심히 코딩 하숭!
드디어 재귀함수 복습 시간이 왔다!!! 휴학하고 알고리즘 개념을 까맣게 잊어버리면서 살았더니재귀에 대한 두려움이 생긴 것 같다... 다시 열심히 복습해보자!!! 재귀 함수함수가 자기 자신을 호출하여 문제를 반복적으로 해결하는 기법주로 문제를 작은 단위로 나누고, 반복적으로 처리해야 할 때 사용! 기본 구조 및 특징베이스 조건(Base Case)재귀 호출을 멈출 조건. 문제를 더 이상 나누지 않고 결과를 반환한다. 재귀 호출(Recursive Call)함수가 자기 자신을 호출하여 문제를 작게 나눈다. 특징함수 호출이 스택 구조로 쌓인다. 따라서 호출이 많아지면 Stack Overflow가 발생할 수 있다 def factorial(n): if n == 0 or n == 1: # 기저 조건 ..

힙(Heap)우선순위큐를 구현하는 데 주로 사용되는 트리 기반 자료구조 특정 규칙에 따라 부모 노드와 자식 노드 간의 관계가 정해져 있어,효율적으로 최대값이나 최소값을 빠르게 찾을 수 있다 힙의 특징[완전 이진 트리]힙은 항상 완전 이진트리의 형태를 유지함항상 왼쪽에서 오른쪽으로 순차적으로 채워지며, 마지막 레벨만 부분적으로 채울 수 있음 (차곡차곡) [최대 힙]부모 노드의 값이 자식 노드보다 항상 크거나 같음 [최소 힙]부모 노드의 값이 자식 노드의 값보다 항상 작거나 같음 힙의 구조트리 구조이지만 배열로 구현되는 경우가 많음!완전 이진 트리 구조이기 때문에, 배열 인덱스만으로 부모와 자식 노드를 효율적으로 찾을 수 있다 부모 노드 인덱스: i왼쪽 자식 인덱스: 2i + 1오른쪽 자식 인덱스: 2i +..

프로그래머스 알고리즘 고득점 kit 문제 풀이 스터디 2주차!스택/큐 문제를 풀기 전에 개념정리를 하려고 한다. 스택 큐는 학교 프로그래밍(C++) 수업 때 배웠고 익숙하지만python으로 코드를 짜려고 하니 헷갈려서 간단하게 정리를 하게 되었다! 스택LIFO (Last In First Out) 가장 먼저 들어온 데이터가 가장 나중에 나간다top을 통해서만 push 또는 pop이 가능하다. python에서 스택 구현python의 append() 함수를 사용해 pushpop() 함수를 사용해 pop을 진행한다.단순하고 바로 이해된다. 모든 함수들의 계산 복잡도도 O(1)로 효율적이다더보기class Stack: def __init__(self): self.stack = [] def p..

해시테이블이란?특정 키를 빠르게 검색, 삽입, 삭제할 수 있도록 설계된 자료구조(key값을 일일히 하나씩 비교하며 value를 찾지 않고, 해시함수를 사용해 바로 인덱스를 찾아가기 때문에 빠르다!)충돌되었을 땐, 해시테이블에 키도 저장되어있어야 충돌 문제 해결을 할 수 있음!그래서 보통 해시테이블에는 key와 value가 함께 저장되어있음(이해가 되지 않는다면 아래에 나오는 충돌 문제 부분과 궁금증 부분을 확인하면 된다.) 용어해시 함수(hash function): 입력된 키를 해시값으로 변환하여 배열의 인덱스로 변환하는 함수해시 테이블(hash table): 해시값을 인덱스로 하여, 실제 데이터를 저장하는 배열 기본적인 동작 과정1. 저장할 키가 주어지면, 이를 해시 함수에 넣어 해시 값을 계산2. 계..

You Only Look Once: Unified, Real-Time Object Detection(2015)You Only Look Once: Unified, Real-Time Object Detection You Only Look Once: Unified, Real-Time Object DetectionWe present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes ..

12 사용자 정의 데이터를 활용한 이미지 분류12.1 문제 정의하기개미와 벌 분류 문제훈련 데이터 244개검증 데이터 153개JPEG 형식다중 분류로 진행시베리안 허스키와 늑대 분류 문제훈련 데이터 40건검증 데이터 10건12.3 데이터 준비데이터 다운로드, 압축 해제, 트리 구조 출력파이썬 함수 말고 리눅스 커맨드를 사용!다운로드: wget압축 해제: unzip트리 구조 출력: treetree 커맨드의 경우 (구글 코랩에 기반하는 OS에 포함되어 있지 않으므로) 일단 apt 커맨드를 통해 tree 커맨드를 도입한 다음 사용한다tree 커맨드 install!pip install torchviz | tail -n 1!pip install torchviz | tail -n 1 w = !apt install ..

11 사전 학습 모델 활용하기11.2 사전 학습 모델사전 학습 모델실제 실무에서는 학습을 밑바닥부터 시작하는 경우는 오히려 드물다미리 학습이 되어있는 사전 학습 모델을 활용하여 정확도가 더욱 높은 모델을 만든다파이토치에서 이미지 분류 모델로 사용 가능한 사전 학습 모델아래의 모델들은 모두 224 x 224 화소의 이미지 데이터로 학습되었음클래스명: 파이토치에서 실제 모델을 읽어올 때 사용하는 클래스명Top-1 에러: ILSVRC에서 과제를 위해 공개한 ImageNet이라는 1000개의 클래스를 분류하는 문제에서 검증에 대한 에러 비율Top-5에러: 정답이 모델의 예측 결과의 Top-5 안에 들지 못한 비율 사전 학습 모델 호출 예시from torchvision import modelsnet = model..

10 튜닝 기법 10.1 이 장의 중요 개념 이미지 대상 딥러닝 분류 모델의 튜닝 기법 (1) 신경망의 다층화 (2) 최적화 함수를 개선 (3) 과학습에 관한 대책 10.3 최적화 함수 최적화 함수 손실의 경사 값을 기반으로 어떤 알고리즘을 통해 파라미터를 수정해 나갈 것인지 SGD Stochastic Gradient Descent 경사에 일정한 학습률을 곱해서 파라미터를 수정해 나가는 방식 lr = 0.001 # 학습률 w -= lr * W.grad B -= lr * B.grad Momentum SGD 알고리즘을 개선하기 위해 나온 방법 모멘텀 인수를 설정하여, 과거에 계산했던 경사 값을 기억했다가, 그만큼 파라미터를 일정 비율 감소시킴 (SGD의 경우 현재 경사 값만 반영함) optimizer = o..
python으로 데이터를 처리하고 작업하면서 맨날 헷갈려서 찾아보는 코드들! (내 기준) CSV 불러오기 df = pd.read_csv("df.csv", encoding="cp949") Column data type 변환 df['습도'] = df['습도'].astype(float) Column drop df.drop('습도', inplace=True , axis=1) df.drop(['습도', '강수량'], inplace=True , axis=1) null인 행만 제거 df = df.dropna(subset=['메인1']) 0으로 결측치 채우기 df = df.fillna(0) 날짜 처리 - datetime df['날짜'] = pd.to_datetime(df['날짜'], format='mixed') df[..

09 CNN을 활용한 이미지 인식 9.1 문제 정의 CIFAR-10 32 x 32 화소의 컬러 이미지 데이터 이미지를 학습하여 해당하는 이미지의 카테고리를 예측 컬러이므로 → (3, 32, 32) 🌟채널🌟 이미지 → ‘색, 가로, 세로’의 3계 텐서의 구조를 유지 (여기에서 ‘색’이 채널!) RGB라면 채널은 3 흑백 등 단일 색상일 경우 채널은 1 두번째 층 이후에서는 ‘색’에 해당하는 인덱스는 더 이상 색의 의미를 갖지 않게 된다 ⇒ 학습하면서 다른 특징에 초점을 맞출 수 있기 때문 이렇게 깊이에 해당하는 인덱스는 ‘채널’이라고 불림 📌 채널이 4개 이상일 경우? → 다중 모달 데이터 (자연어처리) → 시간 차원 (비디오) → 3D 이미지 → 특징 추출: 일부 심층 학습 아키텍처에서는 채널 수를 증가..