전체 글(137)
-
Chapter7. 최신 모델의 학습 방법
♣ 이미지네트 - 이미지넷 범주 1,000개, 픽셀 약 500개로 표현된 다양한 크기의 이미지를 130만 장 제공. - MNIST 5만 장으로 구성된 28*28 픽셀의 흑백 숫자 손글씨 이미지 - CIFAR10 6만 장으로 구성된 32*32 픽셀 크기의 컬러 이미지. 전체 이미지는 10개의 범주로 구분됨. 이미지네트는 전체 이미지넷 데이터 중 매우 다른 범주를 10개만 선택하여 구성한 데이터셋임. 대용량 이미지넷과 달리 저렴하면서도 빠르게 분류 모델을 만들 수 있음. 이미지네트 데이터셋 다운로드하기 5장에서 다룬 '사전 크기 조절' 기법을 적용하여 데이터셋을 DataLoaders 객체로 만들기 - get_y = parent_label 각 이미지 파일의 상위 폴더 이름을 이미지의 레이블로 반환하는 함수 -..
2024.01.17 -
BFS(너비 우선 탐색, 백준 알고리즘 16953번)
♣ 문제 ♣ 문제 이해 주어진 정수 A를 정수 B로 바꾸는 문제로, A*2를 하거나 str(A)+'1'을 해서 숫자를 바꿔간다. 첫 번째 예제를 보면 2 -> 4 -> 8 -> 81 -> 162 루트를 통해서 162를 만들 수 있고, 4번의 숫자 변화 끝에 답을 얻은 것이므로 4+1 = 5 를 프린트한다. 반면 두 번째 예제(4, 42)를 보면 위의 그림과 같아서 4를 42로 만들 수 있는 경우가 없기 때문에 -1을 출력해야 한다. ♣ 문제 해결 방법처음에는 주어진 오리지널 숫자를 2배 하거나 뒤에 1을 덧붙이는 수를 모두 리스트에 넣어서 조건을 따지려고 했는데 너무 복잡하게 느껴졌다. 그래서 오리지널 숫자는 그냥 두고 원하는 결과인 숫자로부터 따지기로 했다. 예를 들어 첫 번째 예제(2, 162..
2024.01.16 -
트리 만들기(백준 14244번)
♣ 문제 ♣ 문제 이해 n은 총 노드의 수, m은 리프 노드의 수를 가리킨다. m개의 리프노드는 부모 노드와는 연결되어 있어야 하지만 자식 노드는 갖지 않는다. 따라서 부모와 연결된 노선만 존재한다. 즉 n개의 노드가 주어지고, 리프 노드가 몇 개인지를 고려하여 노드들 사이의 노선을 완성하여 출력하면 되는 것이다. 예를 들어 예제가 4 2 일 때 예제 출력이 0 1, 1 2, 2 3이다. 위의 출력은 수많은 답 중 하나일 뿐이다(이 문제에는 스페셜 저지가 적용된다. 출력된 노선을 노드 사이에 그리면 0, 3 노드가 리프 노드이고, 1과 2는 그 외의 노드가 된다. 답이 이렇게 나와도 된다. 위의 그림에서는 1과 2가 리프노드이고 0과 2는 그 외의 노드가 되는 것이다. ♣ 해결 방법 처음에는 답이 하나만..
2024.01.09 -
Chapter 6. 그 밖의 영상 처리 문제
♣ 다중 레이블 분류의 정의 다중 레이블 분류: 이미지 내에 포함된 하나 이상의 물체 범주를 식별하는 문제. 물체가 여러 종류 존재할 수도 있지만 찾고 싶은 종류의 물체가 전혀 없는 상황도 모두 포함됨. ♣ 데이터 살피기 이미지마다 분류된 물체가 한 종류 이상인 PASCAL 데이터셋 사용 PASCAL 데이터셋은 각 이미지의 파일명과 레이블 정보를 기록한 csv 파일을 제공함. train.csv 파일 확인하기 파일 이름과 타깃값(labels), is_valid 정보를 제공함. ♣ 데이터를 모델 학습에 적합한 형태로 만들기(데이터 블록 구성하기) 위의 DataFrame 객체를 DataLoaders 객체로 만드는 방법으로 DataBlock API 사용을 권고함. 파이토치와 fastai는 학습용 및 검증용 데이..
2024.01.07 -
신장트리(백준 알고리즘 9372번)
♣ 신장트리 연결 그래프의 부분 그래프로서, 그래프의 모든 노드 간선의 부분 집합으로 구성되는 트리 모든 노드는 적어도 하나의 간선에 연결되어 있다. n개의 노드(정점)을 가지는 그래프가 있다면, n개의 정점을 모두 연결할 수 있는 n-1 개의 엣지(간선)으로 이뤄진 부분 그래프들을 신장트리라고 한다. 즉 최소의 간선 수는 n-1이다. ♣ 참고 자료 https://limecoding.tistory.com/123 신장 트리(Spanning Tree) 신장 트리란?(What is a Spanning Tree?) 앞서 포스팅에서 깊이 우선 탐색과 너비 우선 탐색에 대해 다루었다. 연결 그래프 G = (V, E)에 대해서 깊이 우선 탐색이나 너비 우선 탐색을 하게 되면 정점들을 limecoding.tistory..
2024.01.07 -
DP(Dynamic Programming) 백준 알고리즘 1003번
♣ DP의 정의 https://jy-deeplearning.tistory.com/65 DP(Dynamic Programming, 백준 알고리즘 14501번) ♣ DP의 의미 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것. 일반적인 재귀 방식과 DP는 매우 유사함. 하지 jy-deeplearning.tistory.com 지난 포스팅 참고! ♣ 백준 알고리즘 1003번 문제 이해 DP와 재귀함수를 비교하기에 좋은 문제인 피보나치 수를 구하는 문제이다. C++ 함수로 짠 피보나치 함수로, 재귀함수를 이용하여 n번째 피보나치 수를 구하고 있다. 이 문제에서 요구하는 것은 n번재 피보나치 수를 구하는 것이 아니라, fibonacci..
2023.12.31