Deep Learning/framework(16)
-
[Pytorch] torch.utils.data의 Dataset과 DataLoader
torch.utils.data.Dataset 이 클래스를 상속받아 Dataset instance를 생성해주는 class 구현 torch의 dataset은 두가지의 형식이 있음 Map-style dataset - index가 존재해 data[index]로 데이터 참조가 가능하다. - __getitem__과 __len__의 오버라이팅이 필요하다. - ‘__len__’ 에서는 학습 데이터의 갯수를 리턴해주고, ‘ __getitem__’ 에서는 파일 경로가 담긴 리스트의 인덱스값을 참조해 해당 이미지를 연 다음 tensor 자료형으로 바꾸어 이미지 전처리를 실행하는 구조이다. Iterable-style dataset - random으로 읽기에 어렵거나 data따라 batch size가 달라지는 데이터에 적합하다..
2021.08.01 -
[Pytorch] model.eval()
Pytorch로 구현된 딥러닝모델 코드들을 보면 자주 볼 수 있다 (저는 cyclegan 코드리뷰 중 궁금해졌습니다.) def sample_images(batches_done): """Saves a generated sample from the test set""" imgs = next(iter(val_dataloader)) G_AB.eval() G_BA.eval() real_A = Variable(imgs["A"].type(Tensor)) fake_B = G_AB(real_A) real_B = Variable(imgs["B"].type(Tensor)) fake_A = G_BA(real_B) ... ... nn.Module에서 train time과 eval time에서 수행하는 다른 작업을 수행할 수 있..
2021.07.27 -
[Pytorch] torch.nn.Parameter
arameter로 간주되는 tensor의 일종 Parameters는 class = torch.Tensor의 subclasses Module class와 함께하면 특별한 속성을 가진다 Module Attributes가 할당되면 자동으로 Module의 parameter들의 list로 추가되고 Module.Parameters iterator에 추가 된다. =>Tensor 할당과 다른 효과 e.i. RNN의 last hidden state같은 일부 임시상태를 모델에 cache하려고 할 수 있기 때문 Parameter같은 class가 없다면 이러한 임시적인 것들도 등록되어버릴것이다. ex) def __init__(self, input_size, hidden_size, correlation_func=1, do_si..
2021.07.26 -
JSON파일 Python 으로 다루기
파이썬 내장 json모듈 사용 JSON Python object dict array list string str number(int) int number(real) float true True false False null None python object -> json 파이썬 객체를 json데이터로 쓰고/직렬화하고/인코딩 .dumps()메소드에 indent = int형 숫자 ex) 4 옵션을 주면 들여쓰기를 해줌 sort_keys = True해주면 keys를 기준으로 정렬해 직렬화 해 내보내줌 import json json_string = json.dumps(python_data) 이렇게 하면 메모리상에 JSON포맷 데이터를 만들어놓고 파이썬에서 계속 작업할 수 있다 import json with op..
2021.07.04 -
[Pytorch] Variable
원래 autograd를 사용하기 위해 사용되던 타입. but 최신 버전에서는 deprecated 상태임을 볼 수 있었다. 현재는 Tensor 타입과 병합되어서 Tensor에서 default로 autograd 기능을 지원한다. PyTorch 0.4 이상 버전에서는 더이상 Variable을 사용할 필요가 없다.
2021.06.19 -
[pytorch] nn.Upsample
주어진 멀티채널 1D / 2D / 3D 데이터를 업샘플링한다. 인풋데이터는 minibatch x channels x [optional depth] x [optional height] x width 형태로 가정되나, spatial input(2D)은 4D 텐서, volumetric input(3D)은 5D텐서가능한 알고리즘 : nearest neighbor, linear, bilinear, bicubic, 3D이상의 데이터에 대해서는 trilinear parameters size (int/tuple) : output 사이즈 scale_factor(float/tuple) : Depth, Height, Width에 입력받은 정수 만큼 곱해준다. (1,1,2,2) 가 인풋으로 들어오면 (1,1,4,4)가 된다...
2021.06.16