언어
-
파이썬 내장함수들언어/파이썬 2021. 1. 11. 23:09
파이썬은 여러가지 내장 함수들이 있다. 모든것을 외우면 물론 좋겠지만 체득 하는것이 더 효율적이라고 판단하여 기억이 나지 않을때 마다 하나씩 채우기로 한다. 1. zip 2. range 3. any 4. all zip zip()은 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플시퀀스를 만드는 역할을 한다. 밑의 사진을 예시로 설명해보겠다. 파이썬 2에서는 zip()의 결과가 바로 리스트가 된다. 하지만 파이썬 3+에서는 제너레이터를 리턴한다. 제너레이터를 리턴하게 되면 전의 포스팅 처럼 메모리 적인 부분에서 좀 더 효율적으로 사용할 수 있는 이점이 있다. 제너레이터에서 실젯값을 추출하기 위해서는 다음과 같이 list()로 한번 더 묶어주면 된다. 아울러 zip()의 결과 자체는 리..
-
정적메소드와 클래스메소드언어/파이썬 2021. 1. 9. 16:33
파이썬에서 해당 문제는 클래스안에서 다뤄진다. 보통의 인스턴스 메소드가 객체의 인스턴스 필드를 self를 통해 접근할 수 있는 반면, 정적 메소드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스 할 수 없다. 예를 들어 현재 정적메소드로 되어있는 is_square함수를 보면 어떠한 인스턴스 필드를 사용하지 않는것을 볼 수 있다. 보통 staticmethod는 객체 필드와 독립적이지만 로직상 클래스내에 포함됭야 하는 메소드에 사용된다. 이는 메소드 앞에 @staticmethod라는 Decorator를 표시하여 해당 메소드가 정적 메소드인것을 표시한다. 클래스 메소드는 메소드 앞에 @classmethod 라는 Decorator를 표시하여 해당 메소드가 클래스 메소드라는 것을 표시한다. 클래스 ..
-
id VS data_ptr()언어/파이썬 2021. 1. 1. 18:44
아이디 연산자(Identity Operators) is : 양쪽 Operand가 동일한 Object를 가리키는지 아닌지를 검사합니다. is not : 양쪽 Operand가 다른 Object를 가리키는지 아닌지를 검사합니다. 동일한 객체 여부를 판별하는 연산자이다. id() 함수는 객체를 입력값으로 받아서 객체의 고유값(레퍼런스)을 반환하는 함수입니다. id는 동일한 객체인지 판별하기 위해서 사용하는 함수 이다. 메모리 주소 연산자(Identity Operators) 변수.data_ptr() 메모리 주소값을 확인하는 함수이다. 결과값으로 메모리 주소가 나온다. 그렇다면 여기서 질문 두 변수 a와 b의 data_ptr()의 값이 같은데 id값이 다를 수 있을까? => 있다. 예를들어 a = torch.ten..
-
numpy [...]언어/파이썬 2021. 1. 1. 13:20
파이썬 라이브러리중 하나인 numpy는 가장 많이 사용되는 라이브러리 중 하나이다. (저도 종종 사용합니다.....) 그 중 처음보는게 있어서 정리해본다. class MatMul: def __init__(self , W): self.grads = [np.zeros_like(W)] def backward(self, dout): self.grads[0][...] = dout 과 같은 형태를 보게 되었는데 여기서 [...]를 사용하게 되는 이유는 무엇일까? 사실 이 형태는 전에 포스팅 했던 S = Q[:] 형태와 비슷한 형태이다. 즉 S의 id값은 변경되지 않고 Q의 값을 그대로 취한다. 이게 Numpy 버전으로는 [...]로 생각하면 된다. 이렇게 하는 이유는 무엇일까? 바로 grads의 값을 바꿔도 dou..
-
파이썬에 관한 흥미로운 사실언어/파이썬 2020. 12. 29. 19:33
1. 파이썬 주소 해당 print 문에서 뭐가 나올지 예상이 되는가? 바로 답을 말하자면 첫째로 main에 있었던 id 값은 바뀌지 않는다. 즉 before a 의 id 값이 b's id에도 after a 의 id에도 그대로 나온다. 즉 매개변수로 들어간 a가 단순 값이 복사되어서 do 함수 b에 나오는 것이 아니라 실제로 a의 주소값이 들어가서 b의 값을 바꾸어도 a에 영향을 미치게 된다. 2. 파이썬 파일명 파이썬 파일명은 import 한 파일이름으로 만들지 않아야 한다. 아니면 계속 오류가 난다. 예를들어 오늘 나는 sentencepiece를 하려고 google에서 만든 sentencepiece를 import 했는데 해당 코드를 실행한 파일의 이름이 sentencepiece.py였다. 그래서 계속 ..