본문 바로가기

분류 전체보기

(91)
[Python] class / super() python class에서 'super()'의 개념에 대한 정리 python의 class는 상위 class를 상속받을 수 있는데, 상속을 받게되면 하위 클래스는 상위 클래스의 instance와 method의 정보를 물려받게 된다. 예를 들어, 다음과 같은 class A, B를 선언했다고 할때, class A: def __init__(self): self.a = 10 def get_a(self): return self.a class B(A): def __init__(self): self.b = 20 def get_b(self): return self.bB가 A를 상속받고자 한다면, 클래스의 이름 옆에 상속받고자 하는 상위 ..
Self-Supervised Learning Self-Supervised Learning에 대해 막연하게는 알고 있지만, 가끔 헷갈리고 모호한 부분이 아직 존재하는 것 같아서 정리해보려한다.What is Self-Supervised Learning?ML/DL에는 전통적으로 크게 두가지의 학습 방식이 존재하는데, Supervised/Unsupervised, 지도/비지도 학습 방식이다. Supervised Learning(지도 학습)Supervised Learning이란, 말 그대로 모델에게 직접 지도를 해주면서 학습을 시키는 방식이다. 우리가 ML/DL에서 가장 흔하게 접하는 (학습 Data, 정답 Label)의 형태로 모델에게 주면서 모델이 Data를 Input으로 받았을 때, 이를 활용하고 분석해서 주어진 Label을 예측할 수 있도록 유도하는 ..
Covariance What is Covariance?$Cov = E[(X-\mu_X)(Y-\mu_Y)]$위와 같은 식으로 계산되는 값을 X,Y의 covariance(공분산)이라고 한다. 위 식을 직관적으로 해석해보면, 두 개의 확률 변수 X,Y에 대해,X의 평균으로 부터의 편차와 Y의 평균으로 부터의 편차의 곱에 대한 기댓값으로 해석할 수 있는데, 이를 X,Y를 축으로 하는 2차원 평면에서 생각해보면, (x,y)쌍을 이루는 한 점이 평면 위에서 어떤 추세를 갖는지에 따라 값이 결정되는지를 의미한다는 것을 상상해 볼 수 있다. 첫번째 그래프에서는 우하향하는 (x,y)의 추세를 볼 수 있는데, 이는 x가 커지면 y가 작아지고, y가 커지면 x가 커지는 음의 관계를 띄고 있다. 이를 위의 Covariance계산 식에 대입해보면..
밑러닝 - (3) 신경망의 학습신경망을 학습시킨다는 것은 Training Data를 활용해 신경망의 파라미터(Weight/Bias)의 최적값을 구할 수 있도록 하는 것이다. 신경망 학습(Deep Learning)을 통한 방식은 사람이 직접 세운 규칙을 통해 문제를 해결하는 Rule-Based 방식, 그리고 사람이 고안한 알고리즘과 기계가 데이터로부터 특징을 포착하는 방식을 결합한 기계 학습(Machine Learning) 방식과는 다르게온전히 학습 데이터로 부터 신경망이 스스로 학습해 문제를 해결해 나가는 방식이라는 점에서 차이점이 존재한다.데이터신경망을 학습시키기 위한 데이터를 훈련 데이터(training data)라고 하고, 훈련 데이터를 통해 학습된 신경망의 성능 평가를 위한 데이터셋을 시험 데이터(test data..
[Python] GPU 사용량 확인 사용가능한 여러개의 GPU중에서 사용량 기준으로 어떤 GPU를 모델 학습/추론에 사용할지 자동으로 결정하기 위한 코드를 작성하고 싶어 방법을 찾아보던중, 새로 알게된 정보가 있어 적어놓으려한다.torch.cuda.memory_allocated()서두에서 언급한 내용을 검색해보면, 보통 `torch.cuda.memory_allocated(device_idx)`를 사용하면 `device_idx`에 해당하는 gpu에서 어느 정도의 메모리를 사용하고 있는지가 나온다고 한다. 물론 맞는 말이지만, 조사하면서 알게된 내용을 덧붙이자면, 해당 코드는 pytorch 프레임워크 내에서만 사용중인 gpu 메모리의 양을 보여준다. 예를 들어서 한 컴퓨터에서 그래픽 작업을 위한 툴을 사용하면서 GPU를 사용중이라고 하면, `..
[Python] 프로그래머스 - 징검다리 건너기 문제https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이풀이 1 (Sliding Window)def solution(stones, k): import heapq answer = 1e9 l = len(stones) # max heap heap = [] for i in range(k-1): heapq.heappush(heap, (-stones[i],i)) for i in range(k-1,l): heapq.heappush(heap, (..
[Python] 프로그래머스 - 경주로 건설 문제https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이풀이 1BFS 알고리즘을 기반으로 작성하되, 코너와 직선 도로의 경우를 구분하기 위해 방향에 대한 정보(d)를 queue에 추가적으로 넣어 구분.이미 지난 길이라도, 더 적은 비용으로 갱신할 수 있는 경우에 갱신하도록 코드를 구현하였다.def solution(board): from collections import deque d = '' n = len(board) answer = [] q = deque([(0,0..
[Python] 프로그래머스 - 호텔 방 배정 문제https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이나의 풀이(정확도 Max / 효율성 Low)def solution(k, room_number): answer = [] booked = dict() for num in room_number: room = num if booked.get(num,0): # 원하는 방이 있는 경우 room = booked[num] while booked.get(room,0): ..