잠깐 파이썬 복습하기! (self, init 같은것들이 기억이 안난다)
https://www.inflearn.com/questions/4642
https://velog.io/@magnoliarfsit/RePython-1.-self-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
1. init
인스턴스 생성시에 init 메서드를 호출한다.
이 __init__은 파이썬에서 클래스의 생성자를 만들때 항상 동일한 규칙입니다. __init__을 사용하면 클래스명을 쓰고 옆에 바로 인자들을 채워 넣음으로써 그 값들을 지닌 객체를 만들어 낼 수 있죠.
2. self
그리고 메서드의 첫 번째 인자는 항상 self여야 한다고 했습니다. 하지만 메서드의 첫 번째 인자가 항상 self여야 한다는 것은 사실 틀린 말입니다. 이번 절에서는 파이썬 클래스에서 self의 정체를 확실히 이해해 봅시다.
먼저 다음과 같이 두 개의 메서드가 정의된 Foo 클래스를 만들어 봅시다. 여기서 눈여겨봐야 할 점은 func1() 메서드의 첫 번째 인자가 self가 아님에도 클래스를 정의할 때 에러가 발생하지 않는다는 점입니다.
self는 객체의 인스턴스 그 자체를 말한다. 즉, 객체 자기 자신을 참조하는 매개변수인 셈이다. 객체지향 언어는 모두 이걸 메소드에 안보이게 전달하지만, 파이썬은 클래스의 메소드를 정의할 때 self를 명시한다. 메소드를 불러올 때 self는 자동으로 전달된다. self를 사용함으로 클래스내에 정의한 멤버에 접근할 수 있게된다.
메서드의 첫 번째 인자는 self지만 호출할 때는 아무것도 전달하지 않는 이유는 첫 번째 인자인 self에 대한 값은 파이썬이 자동으로 넘겨주기 때문입니다.
아하! 그러면 self 어쩌구 하는건 전부 클래스 자체에 접근하기 위해서 아닌 클래스로 만든 "인스턴스"에 접근할 수 있는 속성이나 메서드구나! 이거를 클래스 내에서 정의할 때 self 라는 이름으로 약속해서 사용하기로 되어있구나!
출처: https://sikaleo.tistory.com/114 [SIKALEO]
파이토치는 파이썬 기반 패키지
-gpu를 사용하기 위해 numpy를 안쓰고 대체 한다.
-유연성과 속도를 제공한다
1. Tensor
Tensors는 numpy의 ndarrays와 비슷하다
x.veiw(resize,reshape)
x.item() < 하나의 원소로 구성된 tensor를 갖고 있따면, 숫자 값을 얻기 위해 item()사용
https://pytorch.org/docs/stable/torch.html
__getitem__ 함수는 주어진 인덱스 idx 에 해당하는 샘플을 데이터셋에서 불러오고 반환합니다. 인덱스를 기반으로, 디스크에서 이미지의 위치를 식별하고, read_image 를 사용하여 이미지를 텐서로 변환하고, self.img_labels 의 csv 데이터로부터 해당하는 정답(label)을 가져오고, (해당하는 경우) 변형(transform) 함수들을 호출한 뒤, 텐서 이미지와 라벨을 Python 사전(dict)형으로 반환합니다.
class MyDataSet(Dataset): def __init__(self): # 인자를 받아 인스턴스 변수를 초기화 def __len__(self): # 데이터 셋의 길이를 리턴한다. return len() def __getitem__(self): # 학습 이미지와 이미지의 GT (cifar10이므로 이미지의 class)를 리턴한다. return traning_data, ground_truth
'머신러닝-딥러닝 > study' 카테고리의 다른 글
1. Pytorch 첫 걸음 (torch함수, backprop,dim...) (0) | 2022.01.19 |
---|---|
Loss Function 정리 (0) | 2022.01.19 |
1. 머신러닝,딥러닝 개요 (0) | 2021.04.29 |
(ch.1) Image Classification - GoogLENet (0) | 2020.12.30 |
(ch.4) 자연어처리 - 단어를 숫자로 표현 (0) | 2020.12.30 |