파이썬3 노트 24

pycharm과 terminal에서의 python3 환경이 달라 에러가 날 때

torchtext의 RawField()에서 is_target에러가 나길래 찾아보다 master에 merge되었으니 재설치 해야 한다는 issue 발견. -> https://github.com/pytorch/text/pull/459 Set `is_target` to False by default in `RawField` by SudoSharma · Pull Request #459 · pytorch/text Fixing issue potentially caused by #288. You can now use RawField directly without any workarounds as mentioned in issue 422. github.com 하지만 terminal로 열심히 업그레이드 해도 코드는 업그..

파이썬3 노트 2019.03.29

[Iterator]

1. Iterator(오브젝트형) 먼저 파이썬 도큐멘트에 나와있는 설명을 보면:데이터의 연속(stream)을 표현하는 오브젝트이다. iterator의 __next__() 메서드(혹은 내장 함수인 next())에 대한 반복적인 호출은 시퀀스 속 아이템을 잇따라 불러온다. 더이상 불러올 아이템이 없을 경우에는 StorIteration 예외가 대신 반환된다. iterator는 iterator 오브젝트 그 자체를 반환하는 __iter__() 메서드를 가지기 때문에 모든 iterator는 당연히 iterable하며 다른 iterable이 적용될 수 있는 곳에 사용될 수 있다. 딱 하나 예외는 여러번의 반복을 시도하는 코드이다. 컨테이너 오브젝트(e.g. list)를 iter()에 넘길 때 마다 혹은 for 반복문..

파이썬3 노트 2019.01.13

torchtext: example 속 들여다보기

torchtext를 쓰다보면 from torchtext.data import Dataset, Example, Field, Iterator, LabelField, NestedField, RawField class Anything(Dataset): def __init__(self, *arg, fields, filter_pred=None): examples = [] ... super(Anything, self).__init__(examples, fields, filter_pred) examples라는 것을 볼 수 있는데(물론 오브젝트형은 달리도 엄청 많지만) examples 속에 어떻게 내용이 들어가 있는가 확인하기 위해서는

파이썬3 노트 2018.12.31

[**kwargs] [assert]

함수를 만들 때 인수로 *args를 넣으면 (정확하게 말하자면 * 를 붙인 인수인데 보통은 저렇게 적으니까) 0개 이상의 인수가 들어올 수도 있고 아닐 수도 있으며 입력될 때에는 몇 개나 입력이 될지 정해놓지 않았다는 이야기가 된다. 1. **kwargs 하지만 인수 중에는 키워드 인수라는 것이 있다.이건 값을 정해놓은 인수를 말하며 함수를 만들 때 키워드 인수는 가장 마지막으로 가야 한다. 예로, 아까 올린 pathlib글에 적은 함수를 약간 수정해서 가져오겠다.import torch from torchtext.data import Dataset, Example, Field, LabelField, RawField import csv class DataLoadwithPath(Dataset): urls =..

파이썬3 노트 2018.12.17

pathlib 이야기: [Path.open()] [Path.home()] [exists()] [mkdir()]

파이썬으로 파일을 불러오는데 있어서 pathlib은 중요하다.나는 항상from pathlib import Path dir_folder = Path('file path') file1 = dir_folder / 'file name' file2 = dir_folder / 'folder name' / 'file name' def load(file: Path): with open(file, mode='r') as f: ....혹은import pathlib dir_folder = pathlib.Path(__file__).parent() file1 = dir_folder / 'file name' def load(file: pathlib): with open(file, mode='r') as f: ...와 같이 pat..

파이썬3 노트 2018.12.15

[return] [yield] [yield from]

파이썬3.+ 에서 함수를 만들 때 마지막에 return을 적으면 return 뒤에 나오는 값을 반환하고 함수를 끝낸다. 예를 들어, 아래와 같은 함수가 있다고 하자.def noniter(file: Path): datum = [] with open(file, mode='r', encoding='utf-8') as f: csvf = csv.reader(f) for line in csvf: data = (line[1], tokenize(line[3])) datum.append(data) return datum이 함수에 파일 인수를 입력해 실행하면 datum을 반환하고 멈춘다. 하지만 yield는 다르다.return과 달리 함수가 처리한 결과를 반환하고도 처리할 인수가 남았으면 다시 함수를 돌린다.예를 들어, ..

파이썬3 노트 2018.12.15

pytorch 공부: [nn.Sequential][nn.ModuleList]

10월 안에 CNN-LSTM모델을 짜야 하는데 논문 구현해 놓은 깃허브를 보니 계속 nn.Sequential과 nn.ModuleList가 나와서 정리해야겠다 싶었음. [nn.Sequential]이것은 입력값이 하나일 때, 즉 각 레이어를 데이터가 순차적으로 지나갈 때 사용하면 좋은 방법이라는 것 같다.간단히 말하자면 여러 nn.Module을 한 컨테이너에 집어넣고 한 번에 돌리는 방법이다. 구글에서 찾은 예제를 바탕으로 적당히 적어보면 아래와 같다. import torch import torch.nn as nn class CNNModel(nn.Module): def __init__(self, class_num, filter_num, num): super().__init__(): self.layer1 = ..

파이썬3 노트 2018.10.16

모듈/함수 공부: [__hash__()][Collections-Counter]

파이썬 도큐멘트에 따르면 이 모듈은 파이썬 내장 컨테이너 dict, list, set, tuple을 대신하는 특수한 컨테이너 데이터형을 구현하기 위한 것이라 한다. 다 보면 좋겠지만 당장 필요한 것은 Counter에 대한 지식이므로 다른 것은 스킵! [Counter]: hashable한 오브젝트를 세는 사전의 서브클래스 [__hash__()]대체 hashable한 것이 무언가 싶어 찾아보니 hash function이 나왔다. 위키피디아에 따르면 '임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수'라 한다. 이건 한국어판 위키고 일본어판을 보면 '어떤 데이터가 주어졌을 때 그 데이터를 대표하는 수치를 얻는 조작 또는 그러한 수치를 얻기 위한 함수'라고 나와있다. 이거 좀 다른거 아닌가..?? 내..

파이썬3 노트 2018.08.11

numpy 공부: [Indexing] (3)

7. Structural indexing tools 저번 글에 이어서 np.newaxis에 대한 내용인데 일단 보기 쉽게 저번 출력값을 먼저 적어놓자면:x = np.arange(12).reshape(4, 3) # [[ 0 1 2] # [ 3 4 5] # [ 6 7 8] # [ 9 10 11]] y = x[np.newaxis, :] # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8] # [ 9 10 11]]] z = x[:, np.newaxis] # [[[ 0 1 2]] # # [[ 3 4 5]] # # [[ 6 7 8]] # # [[ 9 10 11]]] 참고로 x의 차원은 2차원, y는 (1, 4, 3)형태 3차원 텐서, z는 (4, 1, 3)형태의 3차원 텐서이다. np.newaxis가 행을..

파이썬3 노트 2018.08.09