Python 4

[Python] optimizer와 scheduler 변경

학습에 optimzier와 scheduler를 사용하다 특정 학습 시점부터 재시작할 때 learning rate나 gamma를 곱해주는 시점을 바꾸고 싶을 때가 있습니다. 이럴 때는 각각 변수명이 optimizer, scheduler라고 하면 아래와 같이 변경해주면 됩니다. learning rete 변경 optimizer.param_groups[0]['lr'] = 0.01 gamma를 곱해주는 시점(milestones) 변경 scheduler의 milestones이 Counter 타입이기 때문에 Counter를 import 해주시고 아래와 같이 원하는 값으로 바꿔주시면 됩니다. from collections import Counter scheduler.milestones = Counter([10, 20,..

Python 2022.11.26

[Python] pack, unpack 함수

C, C++ 에는 int, float와 같이 자료형을 명시하지만 python에서는 이런 게 없어 C/C++과 같이 사용할 때 헷갈리는 부분이 있습니다. 이 중에서 C/C++의 구조를 python에서 사용할 수 있도록 하는 함수에 대해 알아봅니다. 파이썬의 struct 모듈에는 pack과 unpack이라는 함수가 있습니다. C언어에서 %d, %f와 같은 방식으로 변수형 및 그 크기를 알려준 것과 같이 python에서도 위 함수를 사용하면 C와 같이 사용 가능한 형태로 pack, unpack할 수 있습니다. 그 포맷은 다음과 같습니다. 코드를 통해 그 예를 한번 보겠습니다. >>> from struct import * >>> pack('hhl', 1, 2, 3) b'\x00\x01\x00\x02\x00\x0..

Python 2022.10.20

[PyTorch] BrokenPipeError: [Errno 32] Broken pipe

BrokenPipeError: [Errno 32] Broken pipe torch.utils.data.DataLoader()를 사용하는 경우 위와 같은 에러가 발생하는 경우가 있습니다. window의 경우 num_worker 파라미터가 0이 아닐 때 이런 에러가 발생하기 때문에 num_worker를 0으로 설정해주면 에러를 해결할 수 있습니다. 그런데 저는 ubuntu18.04 환경이었는데도 해당 에러가 발생했고, num_worker를 0으로 설정해도 같은 에러가 발생하였습니다. 제 경우 RAM Memory가 부족해서 해당 에러가 발생하고 있었습니다. 혹시 저와 같은 문제를 겪고 계신다면 RAM Memory를 확인해 보시는 것도 좋을 것 같습니다.

Python 2022.04.05

[Pytorch] torch.view와 torch.reshape의 차이점

torch.view()와 torch.reshape() 이 두 함수는 Numpy의 reshape를 기반으로 하는 함수로 두 함수 모두 tensor의 형태를 바꾸는 데 사용됩니다. import torch x = torch.arange(12) >>> x tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> x.reshape(3,4) tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> x.view(2,6) tensor([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) 위와 같이 동일한 tensor에 원하는 형태의 dimension을 입력해 주었을 때 두 함수 모두 입력에 맞는 형태로 t..

Python 2022.04.05