전체 글
-
[python] **kwargs가 뭐지? 영상으로 설명Python 2022. 3. 27. 11:57
(한숨이 절로 나는 **) 들어가며: 다른 사람들의 github를 보다가 **kwargs가 함수에 붙어있으면 (더블 포인터처럼 생겨서는) 이게 무슨 뜻인가 싶습니다. C 프로그래밍을 하시면서 * 달려있으면 현기증 났었고 ** 달려있으면 코딩하는 걸 포기해버린 분들도 있으실 겁니다. 파이썬에서는 다행히 주소값을 직접 건드릴 만큼 low-level로 프로그래밍을 하는 경우는 거의 없고, C보다는 **의 사용이 더 직관적입니다. 다른 사람들의 github 코드들 보면 함수에 간간히 등장을 하는데, 이것을 어떻게 사용할까요? 그리고, 왜 헷갈렸던 걸까요? (영상 설명은 본 포스트 마지막을 참고해주세요) **kwargs? : 일단 kwargs는 keyword arguments의 줄임말입니다. 프로그래밍에서 arg..
-
엑셀 파일들 내맘대로 병합하는 법(영상)[엑셀에 엑셀달기]Python 2022. 3. 27. 10:47
들어가며: 업무 수행을 하시다 보면 raw 데이터들이 엑셀 확장자(.xlsx)로 주어지는 경우가 많습니다. 여러 엑셀 파일을 취합하는 방법들이 있지만(시트 병합, 인터넷에서 다운받은 프로그램, ...) 시트 병합은 한 번에 3개 이상의 병합이 불가능하며 시트로 합쳐지는 단점이 있고 인터넷에서 다운받은 프로그램은 내 데이터의 상황에 맞춤이 아닌 것이 불편합니다. 내 데이터에 맞춤으로 직접 병합하는 코드를 짤 수 있다면 작업 속도가 크게 상승할 것입니다. 파이썬으로는 쉽게, 직접 하실 수 있습니다. import openpyxl data = [] for i in range(1, 6+1): filename = "2021/20210{}.xlsx".format(i) b = openpyxl.load_workbook(..
-
[논문공부] (자세한 리뷰) Masked Autoencoders are Scalable Vision LearnersDeep-learning 2021. 12. 27. 23:43
들어가며: Masked Autoencoders Are Scalable Vision Learners(링크)는 Facebook AI Research(아직은 Facebook으로 되어있는데 meta로 바뀌겠죠?)에서 나온 논문으로, 현재 CVPR 2022에 submit되어 review중인 듯합니다. 간단하게 요약하면, Masked autoencoder는 Masked patch를 복원하는 task로 학습한 것을 pretrained weight로 삼아서 downstream task로 finetuning했을 때 예측 성능이 더 좋다. 는 내용입니다. Language model에서 Transformer 이후 BERT가 등장한 것과 마찬가지로 Vision Transformer(이하 ViT)의 BERT격이 이 MAE라고 ..
-
[이 문법 뭐임;] @staticmethod 엄밀하지 않고 쉬운 설명Python 2021. 11. 17. 18:15
github로 다른 사람들 코드 보다보면 class에 @staticmethod로 감싼 것을 종종 확인할 수 있죠? ' 어차피 그래봤자 class 안에 있는 메소드니까, 비슷한 역할의 적당한 함수같긴 한데... ' 라는 생각이 들긴 하지만 혹시 내가 놓치는게 있진 않을까 해서 꽤나 찝찝합니다. python official page(https://docs.python.org/3/library/functions.html#staticmethod)에서 확인해보면, @staticmethod는 class의 method를 static하게 만들어준다고 합니다. 아주 당연한 소리 하면서 열받게 하네요. 쉽게 말씀드리면, @staticmethod로 감싼 method는 그냥 함수입니다. 함수 중에서도 "그냥" 함수입니다. 그..
-
[이거 어떡하지] torch.load 했는데 'model' object has no attribute 'copy' 뜰 때Pytorch 2021. 8. 6. 12:49
증상: raise ModuleAttributeError("'{}' object has no attribute '{}'".format(torch.nn.modules.module.ModuleAttributeError: 'model' object has no attribute 'copy' 해결 방법 요약: 1. torch.save() 오사용 2. torch.save(model.state_dict(), "path.pt")로 model을 save 해야 함. torch.save(model, "path.pt")로 모델을 저장하지 않았는지 확인해서 재학습 해설: 'error를 살펴보면, model은 copy라는 attribute(method 혹은 class 변수)가 없다.'라고 합니다. pytorch로 딥러닝 모델을 ..
-
[논문공부] Denoising Diffusion Probabilistic Models (DDPM) 설명 2Deep-learning 2021. 7. 10. 02:45
─ 들어가며 ─ 이 포스트는 DDPM 설명 1(링크)의 후속 포스트로 학습 방법 및 결과에 대한 포스트(완)입니다. 이론적인 내용과 간략한 설명은 이전 포스트를 확인해주세요 DDPM post1 의 2번 항목에서에서 도출한 loss function은 ①은 VAE의 KL divergence와 비슷한 term이고, ②는 reverse process와 diffusion process의 분포를 매칭시키는(KL divergence를 낮추는) loss이고 ③은 reverse process의 마지막 과정으로, VAE의 reconstruction loss에 대응되는 term이라고 볼 수 있습니다. 3. Loss 설명 및 training technique 이 loss term을 최적화시키는 방법, 그리고 더 좋은 gene..
-
[논문공부] Denoising Diffusion Probabilistic Models (DDPM) 설명Deep-learning 2021. 7. 9. 21:51
─ 들어가며 ─ 심심할때마다 아카이브에서 머신러닝 카테고리에서 그날 올라온 논문들이랑 paperswithcode를 봅니다. 아카이브 추세나 ICLR, ICML 등 주변 지인들 학회 쓰는거 보니까 이번 상반기에는 diffusion model을 많이 변형해서 쓰고 있었습니다. 이전까지는 그런게 있나보다 하고 그냥 새로운 generative model중 하나겠거니 하고 잠깐의 유행이겠거니 하고 넘겼는데 paperswithcode에 어느날 이런게 하나 올라옵니다. https://paperswithcode.com/paper/diffusion-models-beat-gans-on-image-synthesis Papers with Code - Diffusion Models Beat GANs on Image Synthe..
-
[이거 어떡하지] Expected target size (, ), got torch.Size([, ]) (nn.CrossEntropyLoss 에서)Pytorch 2021. 6. 18. 22:23
증상: ValueError: Expected target size(256, 84), got torch.Size([256, 64]) image classification이나 language model을 학습시키는 과정에서 nn.CrossEntropyLoss 를 사용하실 때 위와 같은 에러가 발생할 때가 있습니다. (특히 language model처럼 batch 한 샘플마다 sequence별로 classification을 해야 하는 경우) sequence sample별로 output으로 num_classes만큼의 dimension이 뽑히게 냈는데 dimension이 안맞으면 에러가 발생할 수 있습니다. language model의 경우에는 입력으로 [batch_size, len_input] 의 shape를 ..