의문 지점: (BERT Fine-Tuning for Text Classification: Sentence-Pair Classification)
- samples는 위처럼 __getitem__메서드가 정의된 BertDataset Class의 객체이다.
해결:
iterator_getitem.py
class Counter:
def __init__(self, stop):
self.stop = stop
def __getitem__(self, index):
if index < self.stop:
return index
else:
raise IndexError
print(Counter(3)[0], Counter(3)[1], Counter(3)[2])
for i in Counter(3):
print(i, end=' ')
실행 결과
0 1 2
0 1 2
Counter(3)[0]을 출력했을 때 0이 나왔습니다. 마찬가지로 Counter(3)[1]은 1, Counter(3)[2]는 2가 나왔습니다. 그리고 for 반복문에 Counter를 사용했을 때도 1, 2, 3이 나왔습니다.
소스 코드를 잘 보면 __init__ 메서드와 __getitem__ 메서드만 있는데도 동작이 잘 됩니다. 클래스에서 __getitem__만 구현해도 이터레이터가 되며 __iter__, __next__는 생략해도 됩니다(초깃값이 없다면 __init__도 생략 가능).
[출처]
https://dojang.io/mod/page/view.php?id=2407
'Learning Log' 카테고리의 다른 글
[Python] list의 append 메서드와 메모리 (0) | 2023.08.25 |
---|---|
[BERT] BertTokenizer argument 중 text input에 대한 실험 (0) | 2023.08.23 |
[GEN] Self-Instruct (0) | 2023.08.22 |
[GEN] 최신 LLM 발전 순서 (1) | 2023.08.22 |
[GEN] prompt engineering vs. prompt tuning (+PEFT, ICL) (0) | 2023.08.22 |