반응형

Python 378

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 실수형..

[Scipy] 파이썬 p-value 찾기 방법 정리(T-test, 회귀 분석)

Python t검정, 회귀 분석 p value 값 구하기 방법 요약 파이썬에서 p-value 값을 계산해내는 방법들을 t-test와 회귀 분석의 경우에 대하여 간략하게 정리해보도록 하겠습니다. p-value 값 찾기 : t-검정의 경우 ttest 함수 실행 후 반환 결과의 1번 인덱스(두 번째) 값에 p-value가 들어있으므로, 해당 값을 인덱싱해주시면 됩니다. from scipy import stats import numpy as np X = np.random.random(50) # 데이터 가정 # X의 평균이 0인 경우에 대한 p-value stats.ttest_1samp(X, 0)[1] # 4.530894030802283e-17 # X의 평균이 0.5인 경우에 대한 p-value stats.tte..

Python/Scipy 2022.07.13

[Pandas] 파이썬 데이터프레임 행/열 순서(위치) 변경 방법 정리

Python 판다스 행, 열 순서 바꾸기 예제 파이썬 판다스 모듈에서 데이터프레임 내 행 및 열의 위치를 원하는대로 변경하는 방법들을 정리해보도록 하겠습니다. 용이한 이해를 위하여 아래와 같은 데이터프레임 df를 예시로 들어 설명드려 보겠습니다. import pandas as pd a = {'A' : ['0', '1', '2', '3', '4'], 'B' : ['00', '11', '22', '33', '44'], 'C' : ['000', '111', '222', '333', '444'], 'D' : ['0000', '1111', '2222', '3333', '4444']} df = pd.DataFrame(a) df 데이터프레임 행 위치 바꾸기 1. reindex 함수를 사용하는 방법 df.reindex..

Python/Pandas 2022.07.10

파이썬 로또 번호 추출, 당첨 등수 구하기 및 구매 시뮬레이션 구현 예제

Python 로또 프로그램 구현 실습 파이썬으로 로또(Lotto) 복권의 당첨 번호를 추출하고 주어진 상황의 등수를 구해보며 여러 번 구매하는 시뮬레이션의 결과를 출력하는 과정들을 구현하여 간단한 로또 프로그램을 만들어보는 예시를 다루어 보겠습니다. 로또 당첨 번호 추출 1~45 번호 중 중복 없이 7개를 뽑아 6개는 당첨 번호, 1개는 보너스 번호로 사용하게 됩니다. 이는 넘파이 모듈의 np.random.choice 함수를 활용하면 쉽게 번호를 뽑을 수 있습니다. import numpy as np numbers = np.random.choice(np.arange(1, 46), 7, replace = False) # 1~45 중 7개 추출 win_numbers = numbers[:-1] # 당첨 번호 6..

반응형