백준 단계별로 풀어보기(집합과 맵) 파트에서 계속 시간초과가 발생했다.해결방법으로는 두가지 정도로 요약할 수 있는데, 첫번째로는 리스트 대신 딕셔너리 사용, 두번째로는 개수를 세는 문제에서 for문을 돌면서 세지 말고 파이썬 함수 Counter를 사용하는 것이다. 이 두가지에 대해서 정리를 해보고자 한다. 딕셔너리diction_name = {}diction_name[key_name] = value_name 딕셔너리를 { }를 통해 하나 만든다.리스트와 달리 값을 추가할 때 list_name.append(value)가 아니라 key를 찾아서 value를 지정해주는 형식 Counterfrom collections import Counterc = Counter(nm_name)key 값으로는 이름, valu..

import torchimport torchvisionimport torchvision.transforms as transformsimport torchvision.models as modelsfrom torch.utils.data import DataLoaderimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimimport matplotlib.pyplot as pltdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")alexnet = models.alexnet().to(device)resnet18 = models.resnet18().to(d..
정의재귀함수는 함수 안에 함수를 호출하는 함수 (자기 자신을 호출하는 형태)함수 내에서 그 함수를 다시 사용하는 것더보기더보기⚠ return : 함수를 실행했던 위치로 돌아가라, 함수를 여기서 끝내라는 의미 주의할점재귀함수는 자기 자신을 호출하기 때문에, 잘못하면 무한히 호출할 수 있다. 따라서 탈출 조건이 필수이다. 예제간단한 예제def recursion(n) : # n이 0이면 빠져나오기 if n == 0 : return 0 # n 출력 print(n) # 다시 recursion 함수에 n-1 입력 return recursion(n-1)------------------------------------------------------..

torch.max : 최댓값을 출력dim=0이면 dim=1이면 뭐를 기준으로 어떻게 더한다...이런게 나는 헷갈려서 터득한 방법이 있다 !torch.sum과 마찬가지로 인덱스를 이용하여 구하는 방법예를 들어, 아래와 같이 dim=0을 기준으로 하면 인덱스 0번째 값이 5이므로, 5개가 묶인 곳 중에서 최댓값 하나를 산출하고 나머지 1번째 인덱스 값만큼의 크기로 출력 (즉, (1, 3)크기의 행렬이 출력된다.)>>> import torch>>> a = torch.randn(5, 3)>>> print(a)"""tensor([[-1.1260, -0.7415, -0.9703], [-0.8786, -1.6561, -0.2796], [ 0.1368, 0.8606, -0.3936], ..

만약 데이터가 GPU를 사용해서 학습을 해야하는 상황이라면 코드 내에서 해당하는 데이터들을 GPU용 텐서로 변환해 주어야 한다. 먼저 device를 정의해주기 !import torchdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") CNN추가추가 RNN데이터 처리시퀀스 데이터를 만드는 함수 내에서 x_seq, y_seq를 변환 후 returny데이터는 view를 사용하여 2차원으로 바꿔준다. 왜냐하면 MSE Loss가 기본적으로 2차원 target data를 받기 때문 !return torch.FloatTensor(x_seq).to(device), torch.FloatTensor(y_seq).to(device)..

📚 파이토치에는 Dataset과 DataLoader라는 기능이 있어서 미니 배치 학습이나 데이터 셔플, 병렬 처리 까지 간단히 수행할 수 있다.📚 TensorDataset을 DataLoader에 전달해서 데이터의 일부만 간단히 추출할 수 있다. TensorDataset🎀 개념Dataset을 상속한 클래스로 학습 데이터 X와 레이블 Y를 묶어 놓는 컨테이너이다.이것을 DataLoader에 전달하면 for 루프에서 데이터의 일부분만 간단히 추출할 수 있게 된다.TensorDataset에는 텐서만 전달할 수 있으며, Variable은 전달할 수 없으니 주의Dataset은 직접 작성할 수도 있어서 대량의 이미지 파일을 한 번에 메모리에 저장하지 않고 필요할 때마다 읽어서 학습하는 등 다양하게 활용할 수..

glob특정 디렉토리에 있는 파일들을 하나씩 읽을 때해당 디렉토리의 파일명을 리스트로 받아와야 하고 이때 glob 사용filelist = glob.glob(os.path.join(root, "trainA") + "/*.*")for file in filelist: pass파일명을 리스트로 받은 후에 다양한 옵션을 사용해서 정렬 변경 가능# 파일명filelist = sorted(glob.glob(os.path.join(root, "trainA") + "/*.*")) # 파일 생성일filelist = sorted(glob.glob(os.path.join(root, "trainA") + "/*.*"), key=os.path.getctime) # 파일 최근 접근일filelist = sorted(glob.g..

✨ 계속 업데이트 예정📚 개념데이터 특징, 분석의 결과, 현재 상태 등 다양한 분석을 위해 시각화 하는 방법 중 하나이것 외에도 여러가지 시각화 라이브러리 있음 🔎 불러오기from matplotlib import pyplot as plt 💡 다양한 기능들plt.figure( )그래프의 틀을 담당figsize = (너비, 높이)로 전체 표의 사이즈 조절 가능plt.figure(figsize = (10, 5)) plt.plot( )리스트나 넘파이 배열을 모두 2차원 그래프로 표현추가적인 함수를 통해 그래프를 꾸며준다.plot(x변수, y변수, ...)로 표현하면 (x, y)에 해당하는 그패르르 그려준다.plot(y변수, ..._)로 표현하면 x변수는 0, 1, 2...의 정수가 자동으로 들..

선형 회귀식개념nn.Linear가 하나 있는 모델선형식은 모든 데이터를 직선으로 예측하기 때문에 학습이 매우 빠르다는 장점이 있지만, 데이터 내 변수들은 일반적으로 비선형 관계를 갖기 때문에 선형 모델을 가지고 예측하는 것은 한계 코드nn.Linear(N, M, bias = True) # N : 입력변수의 개수, M : 출력 변수의 개수 다층 신경망(Multi-layer Perceptron : MLP)개념nn.Linear( )을 줄지어 여러 층으로 구성된 깊은 신경망 코드🎀 __init__ : 필요한 변수들을 정의⚠ torch.nn의 모듈(nn.Module)을 사용하기 위해서 반드시 super().__init__()을 해주어야 한다.super() : 상속받은 부모클래스를 의미한다. 부모 클래..

🔎 텐서 합치기torch.catconcatenate 해주는 함수로써 concatenate하고자 하는 차원을 증가시킨다. (단, 차원의 수는 유지)concatenate하고자 하는 차원을 지정해주면 그 차원으로 두 텐서의 차원을 더한 값으로 변경dimension 지정해주지 않으면 default=0으로 설정(예를 들어) 10x2, 10x2인 두 텐서가 있을 때, cat 기준이 0이면 20x2, 1이면 10x4import torchbatch_size, N, K = 3, 10, 256x = torch.rand(batch_size, N, K) # [M, N, K]y = torch.rand(batch_size, N, K) # [M, N, K]output1 = torch.cat([x,y], dim=1) #[M, N+..