Python 4

[Einops] 차원관리의 새로운 차원

Deeplearning code를 작성하다 보면 항상 tensor의 차원을 관리하는 것에서 어려움을 마주친다. 물론 Pytorch나 Numpy를 활용해서 차원을 관리할 수 있지만 문제는 `직관적`이지 않다는 것이다. 실제로 4차원 이상부터는 사람이 상상하기 힘들다.. 이렇게 어려운 차원관리를 효율적으로 할 수 있는 라이브러리가 있다. 바로 `Einops`이다. 이 라이브러리를 처음 발견한 코드는 ViT를 Pytorch로 구현한 코드였다 처음 이 코드를 보았을때, 기존 Python의 문법에서 본적이 없는 하이퍼 파라미터의 형태를 갖고 있어서 조금은 혼란스러웠다. out = torch.matmul(attn, v) out = rearrange(out, 'b h n d -> b n (h d)') return s..

[Python] Typing 1편

참고자료 파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사 파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 바뀌어도 됩니다. 파이썬과 같은 동적 언 sjquant.tistory.com 요즘 오픈 소스를 살펴보면서 공부하는 습관을 기르고 있다 오픈 소스를 살펴보면 Typing을 hint로 주는 경우가 있는 이부분은 처음 보고 어색한 부분이었기 때문에 추가적을 공부를 하였다 그럼 이제부터 공부한 내용을 기반으로 Python 의 Typing에 대해서 정리해보겠다 1. 동적언어의 Typing? Python은 많은 사람들이 알고 있들이 동적언어이다. 동적언어의 가장큰 장점은 굳이 변수의 타입을 일일이 명시할 필요가 없다는 것..

[백준]1991번 트리 순회 풀이

1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net [문제] [코드] import sys input = sys.stdin.readline N = int(input().strip()) #Dic 활용 해서 노드 구성 Tree = {} for i in range(N): node, left, right = input().strip().split() Tree[node] = [left, right] #input값 출력 print(Tree) ##전위 중위 후위 함수로 구현 def preorder(node): #전위..

[Python] 파이썬 데코레이터

데코레이터 decorator 데이터 분석을 하다보면 특히, Pytorch를 활용하다 보면 @[메소드명]을 클래스나 메소드 위에 작성한 예시를 자주보게 될것이다. 이러한 것을 데코레이터 decorator방식이라고 하는데 왜 사용하는 것일까? 바로 메소드를 수정하지 않고 특정 동작을 이용할 수 있기 때문이다. 언제나 그렇듯 간단한 예시로 살펴보자 def Hi(): print('Hi !') >>> Hi() Hi ! Hi !를 출력해주는 간단한 메소드를 작성해 보았다 그런데 우리 서비스는 이용자가 들어올때마다 >>>이용자 이름 >>>Hi ! >>>선택한 서비스 순서로 출력하는 메소드를 구성하고 싶다 이미 우리에게 Hi !를 출력하는 메소드가 있기 때문에 이를 이용해서 새로운 메소드를 작성해 보자 def serv..