반응형

Python 411

파이썬 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

[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

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

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

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

Python/Pytorch 2022.07.18

[Numpy] 파이썬 넘파이 배열 원소 삭제 : np.delete 사용법

Python numpy delete 함수 사용 방법 예제 파이썬의 넘파이 모듈에서 배열의 원하는 위치와 축 방향을 지정하여 원소를 삭제할 수 있는 np.delete 함수의 사용법을 정리해보도록 하겠습니다. (참고로 이 글은 넘파이의 해당 함수 공식 문서 내용을 기반으로 작성되었습니다.) 기본적으로 delete 함수의 인자는 np.delete(배열, 인덱스, 축) 형태로 구성됩니다. 아래와 같은 2차원 배열 arr를 가정하여 값 제거를 진행해보도록 하겠습니다. import numpy as np arr = np.array([[1, 3, 5], [2, 4, 6], [3, 5, 7]]) np.delete axis별 값 제거 예시 먼저, axis = 0 방향으로 1번 인덱스(두 번째) 위치의 값들을 삭제한 예시는..

Python/Numpy 2022.07.17

[Pytorch] 파이썬 파이토치 데이터 병렬 처리 적용 예제 : nn.DataParallel

Python torch data parallelism 사용법 파이토치에서 데이터 병렬 처리를 적용하는 방법에 대한 예제를 살펴보도록 하겠습니다. 해당 글은 아래 링크의 파이토치 공식 사이트의 글을 기반으로 작성되었으며, 좀 더 자세한 설명이 필요하시다면 해당 글을 참고해주세요. 선택 사항: 데이터 병렬 처리 (Data Parallelism) 글쓴이: Sung Kim and Jenny Kang 번역: ‘정아진 ’ 이 튜토리얼에서는 DataParallel(데이터 병렬) 을 사용하여 여러 GPU를 사용하는 법을 배우겠습니다. PyTorch를 통해 GPU를 사용하는 tutorials.pytorch.kr 상황 가정 우선, 아래와 같이 파라미터 수가 많은 네트워..

Python/Pytorch 2022.07.14

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 해결법

if문 넘파이 배열 비교 연산자 ValueError 디버깅 비교문에서 numpy array 등 자료형에 대한 ==, != 연산 적용 시 등장할 수 있는 "ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()" 오류에 대하여 원인과 해결 방안을 다루어보도록 하겠습니다. (참고 : 판다스 시리즈 등 자료형에서도 비슷한 종류의 오류 발생이 가능합니다.) 에러 원인 아래는 두 넘파이 배열이 같은지를 if문 내에서 비교하려는 예시입니다. import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([1, 2, 3, 4]) if a == b..

Python/Debugging 2022.07.14

파이썬 자료형별 '같다'의 기준 정리(비교연산자 == 기준), 클래스에서 == 및 != 구현 방법(__eq__, __ne__)

Python ==, != 자료형별 기준 및 클래스 내 구현 예제 파이썬에서 숫자형, 문자열, 리스트 및 딕셔너리 등 여러 자료형의 비교 연산자에서 같음이 성립하는 기준을 정리해보고, 직접 구현된 클래스 객체 간의 비교 연산자 결과를 구현해보는 예제를 다루어보도록 하겠습니다. 자료형별 '같다'의 기준(== 결과 True) 예제 1. 정수형 a = 1 b = 1 c = 2 print(a == b) # True print(a == c) # False 정수형의 경우 같은 숫자라면 True, 다른 숫자라면 False가 반환됩니다. 2. 실수형 a = 0.1 b = 0.10000000000000 c = 0.10000000000001 print(a == b) # True print(a == c) # False 실수형..

반응형