반응형

분류 전체보기 505

TypeError: Object of type int64 is not JSON serializable 해결

JSON 관련 TypeError 디버깅(return 값 인식 오류) 프로그래머스 등의 코딩 테스트 연습 사이트에서의 답안 제출 과정과 같이 return 결과를 다른 곳에 보낼 때 발생할 수 있는 TypeError 종류에 대한 원인과 해결법을 살펴보도록 하겠습니다. 오류 상황 예시 및 원인 예를 들어, 두 정수 리스트 간의 내적값을 구하는 문제에 대하여 아래처럼 답안을 제출한 경우 return되는 값은 분명히 정답으로 제출되는 듯 하지만 아래와 같은 에러가 발생합니다. (에러 메시지 : TypeError: Object of type int64 is not JSON serializable) 예상되는 원인으로는 np.dot 함수의 출력 결과는 numpy.int64 자료형인데 기본 int 자료형과는 다르게 해당..

Python/Debugging 2022.08.07

파이썬 pop의 시간 복잡도에 대한 고찰(맨 뒤, 중간, 맨 앞 위치 비교 및 remove/del과의 비교)

Python pop() 함수의 시간 복잡도는 O(1)인가? 파이썬으로 원소를 제거하는 pop 함수의 시간 복잡도는 흔히 O(1)으로 알려져있지만 이 사항에는 맨 뒤 원소를 제거하는 상황이라는 조건이 반드시 필요합니다. 이번 글에서는 이에 대한 고찰을 간단한 예시 비교를 통하여 진행해보도록 하겠습니다. 1. 맨 뒤 위치 원소 pop : O(1) pop 함수를 pop()처럼 default 인자로 사용할 경우 맨 뒤 위치(-1번 인덱스)가 자동으로 지정되어 사용되는데, 이 경우는 맨 뒤의 원소만 제거하고 기존 원소들은 그대로 놓아둘 수 있으므로 O(1)의 시간 복잡도가 맞습니다. 1천만개의 원소를 가진 리스트에서 1만번 pop을 진행시켜본다면 실제로 아래와 같이 약 0.002초 만에 완료된 모습을 볼 수 있습..

파이썬 이미지 데이터 증강 모듈 : imgaug

Python image data augmentation library imgaug 여러 종류의 이미지 데이터 augmentation을 쉽고 편리하게 수행할 수 있는 imgaug 라이브러리에 대한 소개 및 간단한 예제 코드를 살펴보도록 하겠습니다. imgaug 모듈이란? imgaug 라이브러리에서는 상당히 다양한 종류의 image data augmentation을 디테일한 옵션을 지정할 수 있게하여 수행해주며, 여러 종류의 데이터 증강 기법을 한 이미지 내에 중첩하여 적용하는 과정마저도 직관적이고 손쉽게 진행할 수 있게 도와줍니다. 공식 github 페이지에 상세한 사용법과 예제들이 자세히 안내되어 있는데 해당 페이지의 링크는 아래와 같습니다. GitHub - aleju/imgaug: Image augme..

Python/Vision Code 2022.08.02

[논문 요약] A Survey of Deep Learning Approaches for OCR and Document Understanding

OCR / Document Understanding Survey 논문 리뷰 이번 글에서는 NeurIPS2020의 ML-RSA 워크숍에 등재되었던 OCR 및 문서 이해와 관련된 Survey paper의 주요 내용에 대하여 간략하고 이해하기 쉽게 정리해보도록 하겠습니다. 해당 논문의 제목은 "A Survey of Deep Learning Approaches for OCR and Document Understanding" 입니다. Document Processing & Understanding의 전체 과정 문서 이미지로부터 텍스트를 추출하여 원하는 정보를 최종적으로 가져와 사용할 수 있는 테크닉은 응용될 수 있는 분야가 방대하고 매우 가치가 높은데, 다양한 종류의 문서 이미지에서 위 과정을 잘 수행하기 위해서..

[Pytorch] 파이토치 허브(torch.hub) 사용법

파이토치 허브 메소드 정리, 사용 예제 Pytorch에서 github repository 등의 위치에 구현되어 있는 ResNet 등의 pre-train된 모델을 쉽게 불러올 수 있는 hub 기능에 대하여 구현된 함수들의 종류를 살펴보고 간단한 사용 예제들에 대하여 다루어 보겠습니다. torch.hub의 더 상세한 사용법이 궁금하시다면 아래 링크의 공식 사이트를 참고해주세요. (해당 포스팅도 해당 공식 글의 내용을 참조하여 작성되었습니다.) torch.hub — PyTorch 1.12 documentation torch.hub Pytorch Hub is a pre-trained model repository designed to facilitate research reproducibility. Publis..

Python/Pytorch 2022.07.28

[논문 요약] Vision Transformer(ViT) 주요 특징 정리

비전 트랜스포머 특징 요약 NLP에서 주로 사용되던 트랜스포머 구조를 비전 도메인에 적용하여 vision AI 분야의 판도를 뒤바꾼 vision transformer(ViT)를 소개했던 논문을 바탕으로 ViT에 대한 주요 특징들에 대하여 간단히 정리해보도록 하겠습니다. 논문의 제목은 "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale" 이며, ICLR 2021에 등재된 paper입니다. CNN vs Transformer ResNet을 비롯한 CNN 구조의 모델들은 이미지 위상 정보를 학습에 반영하기 용이하다는 점을 바탕으로 vision 도메인에서 우위를 점하고 있었습니다. 반면, BERT와 같은 transformer 구조..

RuntimeError: expected scalar type Long but found Float / RuntimeError: "log_softmax_lastdim_kernel_impl" not implemented for 'Long' 해결

파이토치 자료형 관련 오류 디버깅 Pytorch 사용 중 자료형 타입과 관련하여 발생할 수 있는 에러 종류 2가지에 대하여 원인 및 해결법을 간단히 정리해보도록 하겠습니다. 1. RuntimeError: expected scalar type Long but found Float 해당 오류는 정수형 타입 중 하나인 long 타입으로 구현되어야 하는 함수에게 float와 같이 다른 자료형의 텐서가 주어질 때 발생할 수 있는 오류입니다. 예를 들어, 다음과 같이 nn.CrossEntropyLoss 함수를 적용하는 간단한 상황을 살펴보겠습니다. import torch import torch.nn as nn X = torch.tensor([[1, 2, 0], [1, 0, 1]]).float() # 데이터 부분 :..

Python/Debugging 2022.07.23

[Pytorch] 파이썬 Contrastive Learning 구현 예제(feat. SimCLR)

Python 파이토치 SimCLR Contrastive Learning 실습 이번 글에서는 파이썬에서 파이토치 모듈을 활용하여 SimCLR 논문의 Contrastive Learning 사례를 간략한 버전으로 구현해보도록 하겠습니다. 이번 사례에서는 설명 간략화를 위하여 비교적 간단한 MNIST 데이터셋을 사용해 보았으며, 모델로는 아주 단순한 CNN 구조를 가정하고 기법을 구현해 보았습니다. 또한, data augmentation은 cutout 이후 회전을 수행하는 1가지 방법에 대해서만 학습을 진행해보는 예제로 글을 구성하였습니다. Step 1 : 데이터셋 불러오기 MNIST 데이터셋을 불러올 수 있는 방법은 torchvision 모듈을 활용할 수도 있지만 여기서는 사이킷런을 이용하여 데이터를 불러오고..

Python/Pytorch 2022.07.20

[논문 요약] Non-Autoregressive Neural Machine Translation

NAR 기계 번역(NAT) Paper Review 이번 시간에는 문장의 모든 토큰을 한 번에 parallel하게 생성하는 방법인 Non-Autoregressive 기반의 기계 번역 분야의 지평을 열었던 NAT 논문에 대한 주요 내용 요약을 진행해보도록 하겠습니다. 논문의 제목은 "Non-Autoregressive Neural Machine Translation"이며, ICLR 2018에 등재된 paper입니다. 실험 배경 기존의 신경만 기반 기계 번역의 접근법은 1번에 1토큰씩 디코딩하여 생성하는 Autoregressive(AR) 방식의 번역(AT)이었습니다. 그러나, 이러한 방식은 토큰의 길이가 길어진다면 생성 시간이 많이 소요된다는 단점이 있었고, 이에 1번에 문장의 모든 토큰을 디코딩하여 생성해보려..

[Pytorch] 체크포인트(checkpoint) 설명, 저장 및 불러오기 예제(epoch별, step별, best)

파이썬 파이토치 체크포인트 사용법 python torch 모듈에서 학습된 모델의 저장 및 불러오기 과정에서 자주 보이는 체크포인트(checkpoint) 개념에 대하여 정리해보고 epoch별, step별, best 등의 체크포인트를 직접 지정하여 저장 및 불러오기를 해보는 예시를 다루어보겠습니다. 파이토치에서 체크포인트란? 파이토치의 checkpoint는 학습 중인 모델의 특정 시점의 상태를 보존하여 저장했다가 그대로 불러와 이어서 학습하거나 혹은 evaluation을 수행할 수 있게 해주는 파일을 의미합니다. 사실, 체크포인트라는 말은 따로 용어가 있다고 하기보다는 아래 글의 모델의 저장 및 불러오기 과정과 거의 일치한다고 보셔도 됩니다. [Pytorch] 파이토치 모델 저장, 불러오기 방법 torch ..

Python/Pytorch 2022.07.18
반응형