문제 링크 : https://www.acmicpc.net/problem/1463실버3 문제로 아주 대표적인 DP문제라고 한다.내가 푼 방법이 너무나 비효율적이라.. 다른 풀이를 보면서 여러가지 풀이에 대해서 써보려고 한다.나의 풀이우선 나는 재귀를 활용한 방식으로 문제를 풀었고, DP를 활용하여 반복적인 연산을 최대한 막아보려고 했다. 재귀를 활용해 DP를 업데이트 하였고 값이 있을때 최소값으로 업데이트하고 기존보다 크면 더이상 연산하지 않도록 하였는데, 내가 푼 방법의 문제는 결정되지 않는 숫자들을 모두 채우기 위해서 노력한다는 점에서 시간이 많이 들었다.import syssys.setrecursionlimit(10000000)input = sys.stdin.readlinen = int(input())..
전체 글
최근 pytorch의 nn.functional 모듈에 있는 grid_sample이라는 함수를 사용할일이 있었는데, 어떻게 동작하는지 이해가 잘 안되서 하나씩 정리해보려고 한다. Parameters input : 변환할 이미지 - (N,C,H_in,W_in) grid : flow-field라고도 부르고, 어떤 포인트가 어디로 옮겨질지에 대한 부분을 나타낸다. output의 포인트들에 대한 x,y위치를 나타낸다. - (N,H_out,W_out,2) mode (default = 'bilinear') : 중간값에 대한 부분을 어떤 알고리즘을 활용해서 적용할지 나타낸다. 사용할 수 있는 모드는 ('bilinear' | 'nearest' | 'bicubic')가 있다. padding_mode(default = 'z..
카메라 캘리브레이션은 뭘하는 걸까? 무조건 카메라 캘리브레이션이 필요한건 아닌거 같다. 예를들면 사진을 통해 추억을 기록할 때에는 굳이 캘리브레이션 작업을 할 필요는 없는거 같다. 그럼 언제 어떻게 필요하고 사용될까? 카메라 캘리브레이션이란? 카메라는 3차원의 공간을 2차원으로 projection하여 이미지을 얻어낸다. 하지만 우리는 2D 사진에서 다시 한번 3D 공간의 정보를 다시 구성해 보려고 하는 시점에서 캘리브레이션 작업이 필요하게 된다. 캘리브레이션을 정의해보면, 공간에 대한 정보를 이미지를 추출하는데 있어서 공간과 카메라 사이의 관계, 즉 카메라 내부적인 물리적인 구성을 수치적으로 표현하여 3D의 정보가 2D로 projection되는 parameter를 얻어내는 과정이라고 볼 수 있다. 카메라..
사진은 카메라를 통해서 3차원 임의의 공간의 한 순간을 2차원의 평면으로 사영된 결과이다. 카메라가 어떻게 3차원의 공간을 2차원으로 담아내게 되는지 그 과정을 간단하게 정리해보려고 한다. 핀홀(pinhole) 카메라 모델 가장 기본적인 핀홀 카메라 모델이다. 빛이 나무에서 난반사 되어 사방으로 퍼지게 되는데 그 중에 일부 빛(빨간색 라인)을 따라 핀홀을 통과하게 되고 상자 안 벽면에 이 작은 빛들이 모여 하나의 상을 이루게 된다. 일반적으로 핀홀과 상이 맺히는 감광면(이미지 센서) 사이의 거리가 멀어지면 상이 뚜렷해지지만 어두워지고, 반대로 핀홀-감광면 사이의 거리가 짧아지면 밝아지지만 선명도가 떨어지는 경향이 있다. 렌즈를 포함한 카메라 핀홀 카메라는 작은 구멍을 통해서 빛을 모으다 보니 상을 얻기 ..
경사하강법을 통한 선형 회귀 역행렬과 무어펜로즈(Moore-penrose)역행렬을 통하여 선형회귀가 가능하지만, 선형 모델에 대해서만 적용이 가능함 🔑 경사하강법을 통한 선형회귀 선형모델을 포함하여 다른 모델도 대응이 가능함 역행렬을 통한 회귀법보다 더 powerful한 방법 선형회귀에 대한 이해 많은 수의 data가 있을 경우($벡터의 수≥벡터의 길이$), 그 모든 벡터를 만족하는 해답을 구할 수 없음(일직선에 있는 경우는 제외) 따라서 선형회귀 모델을 이용하여 데이터들을 아우를 수 있는 최적의 식을 찾아야 함 💡 data -> 행렬식으로 표현 찾고자 하는 최적의 식을 $X\beta = \hat Y ≈ Y$로 정의하여 $Y-\hat Y$를 최소로 만드는 $\beta$을 구해야 한다. 무어펜로즈 역행렬을..
경사 하강/상승법 미분에 대한 이해 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 최적화에서 제일 많이 사용하는 기법 접선의 기울기를 의미 한 점에서의 접선의 기울기를 알면 어느 방향으로 움직여야 증가 or 감소하는지 확인 가능함 저차원에서는 눈으로 확인 가능하지만, 고차원으로 갈경우 해석이 어려워지기 때문에 미분을 활용 미분 모듈(sympy) import sympy as sym으로 sympy 모듈을 불러옴 from sympy.abc import x 변수를 x로 지정함 import sympy as sym from sympy.abc import x print(sym.diff(sym.poly(x**2 + 2*x + 3),x)) Poly(2𝑥+2,𝑥,𝑑𝑜𝑚𝑎𝑖𝑛..
gradient Descent를 활용한 선형회귀 $n >= m$인 경우 하나의 선형적 해가 존재하지 않는다(모든 data가 일직선에 있는 경우가 있긴하지만, 그 부분은 현실적이지 않기 때문에 제외한다) 오차를 최소로 하는 $\beta$를 구하기 위해 $\hat Y = X\beta$로 정의하면 오차항인 $||Y-X\beta||_2$를 최소로 만드는 $\beta$를 구하는 식으로 바꿀 수 있다. $||Y-\hat Y||_2$을 목적식으로 하여 경사하강법을 사용하여 최소값을 구해보자 수식 유도 $||Y-\hat Y||_2 = ||Y-X\beta||_2$를 최소로 하는 $\beta$ 구하기! 여기서 식 ②번을 유도하는 과정은 위해 식 ①번의 k번째 항을 정리해보자
programmers.co.kr/learn/courses/30/lessons/42883?language=python3 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제설명 이번 문제는 특정 숫자와 상수가 주어지고, 숫자에서 상수 만큼 숫자를 제거해 가장 큰 수를 출력하는 문제이고, 특정 숫자와 상수의 크기가 작지 않아 계속 시간초과 때문에 애먹었던 문제였다. 풀이 내 풀이는 맨 뒤에서 최종 answer의 길이 만큼 먼저 잘라낸 이후 answer의 첫번째 값과 num의 마지막 값을 비교하여, answer[0]의 값이 클경우 num[-1]를 버리고, answer[0]값이 작을 경우 answer에서 숫자 하나를 지우고 num[-1]값을 answer 맨 앞으로 넣어주는 방법으로 진행하였다...