728x90
반응형

전체 글 112

[pytorch] Deep Neural Network (DNN) 로 FashionMNIST 구현해보기

fashion_mnist 데이터셋을 사용하여 심층 신경망을 직접 구현해 보겠습니다. fashion_mnist 데이터셋은 토치비전에 내장된 예제 데이터로 운동화, 셔츠, 샌들 같은 작은 이미지의 모음이며, 기본 MNIST 데이터셋처럼 열 가지로 분류될 수 있는 28x28 픽셀의 이미지 7만 개로 구성되어 있다. 데이터셋을 자세히 살펴보면 훈련 데이터는 0-255 사이의 값을 갖는 28x28 크기의 넘파이 배열이고, 레이블(정답) 데이터는 0-9 사이 정수 값을 갖는 배열입니다. 1. 라이브러리 호출 import numpy as np import matplotlib.pyplot as plt import torch import torch.nn as nn from torch.autograd import Vari..

pytorch 2023.04.25

[코테-list] Array list - Array / Dynamic array

배열의 다양한 활용 1. 반복문 2. Sort & Two Pointer list와 array는 같이 쓰임 step1 : 문제 이해하기 step2 : 접근 방법 step3 : 코드 설계 step4 : 코드 구현 1. 반복문 step1 : 문제 이해하기 이 문제에서 n은 nums.length이다. n은 10^8을 초과할 수 없으므로 가능한 시간복잡도는 O(n^2), O(nlogn), O(n), O(logn), O(1) 이다. step2 : 접근 방법 직관적으로 생각하기 보통 완전탐색으로 시작(그냥 다 더해보는 것) -> O(n^2) 문제 상황을 단순화 하여 생각하기 문제 상황을 극단화 하여 생각하기 자료구조와 알고리즘 활용 "(1) 문제이해하기"에서 파악한 내용을 토대로 어떤 자료구조를 사용하는게 가장 적합..

코딩테스트 2023.04.15

[코테-List] Array

튜플은 순서가 중요하지 않음 (3,2,1) = (1,2,3) 리스트는 순서가 중요함 [1,2,3] != [3,2,1] List 란? Array list(Dynamic array) : 배열을 기반으로 만들어짐 -> 우리가 아는 python Linked list: 메모리상에서 비연속적으로 저장됨 배열(array)의 특성 고정된 저장 공간(fixed - size) : 선언시에 size가 정해져 있다. 순차적인 데이터 저장(order) : 정해진 size 만큼의 연속된 메모리를 할당받아 데이터를 연속적/순차적으로 저장한다. static array 정적 배열 int arr[5] = {3, 7, 4, 2, 6} 메모리에 저장된 데이터에 접근하려면 주소값을 알아야 한다. 배열변수 (arr)는 자신이 할당받은 메모리의..

코딩테스트 2023.04.15

[pytorch] 합성곱층 - Filter(stride / padding)

이 그림은 필터가 한 개인 경우의 계산이다. 위 그림에서는 이해를 돕기 위해 2차원으로 표현했지만 일반적으로 filter는 3차원이며 CNN에서는 3차원 filter 여러 개를 개별 feature map 에 적용하는 방식이다. 그럼 필터가 두 개 이상인 합성곱은 어떤 형태일까? convolution 연산을 적용할 filter의 채널 수 는 입력 feature map의 채널수와 같아야 한다. -> 3 convolution 연산을 적용한 filter의 개수는 출력 feature ma의 채널수가 됨 -> 4 입력 이미지가 3차원 -> 피처맵도 3차원 컨볼루션 적용 시 출력 피처맵의 크기 계산 공식 1. input size = 5*5, filter = 3*3, Strides = 1, padding = 0 인 경..

pytorch 2023.04.09

[pytorch] CNN (합성곱 신경망)의 구조

합성곱 신경망(Convolutional Neural Network, CNN)은 이미지, 음성, 텍스트 등과 같은 다양한 유형의 데이터에서 특징을 추출하고 분류하는 데 사용되는 딥러닝 모델 중 하나입니다. CNN은 기본적으로 이미지 처리에서 주로 사용되며, 입력 데이터를 이미지의 픽셀로 구성된 2D 배열로 취급합니다. 합성곱 계층과 풀링 계층으로 구성되며, 합성곱 계층(convolutional layer)은 입력 이미지에서 특징을 추출하는데 사용되고, 풀링 계층(pooling layer)은 추출된 특징을 간소화하고, 데이터의 크기를 줄입니다. 이러한 합성곱 계층과 풀링 계층의 반복적인 구성으로 인해 CNN은 입력 데이터에서 다양한 수준의 추상화된 특징을 학습하여, 이러한 특징을 바탕으로 입력 이미지를 분류..

pytorch 2023.04.09

[pytorch] Dropout

과적합(over-fitting)은 train 데이터를 과하게 학습해서 발생합니다. 일반적으로 train 데이터는 실제 데이터의 일부분입니다. 따라서 train 데이터를 과하게 학습했기 때문에 예측 값과 실제 값 차이인 오차가 감소하지만, 검증 데이터에 대해서는 오차가 증가할 수 있습니다. 즉, 과적합은 훈련 데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상을 의미합니다. 과적합을 해결하는 방법으로 드롭아웃이 있습니다. dropout : 신경망 모델이 과적합되는 것을 피하기 위한 방법으로, 학습 과정 중 임의로 일부 노드를 학습에서 제외시킵니다. class DropoutModel(torch.nn.Module): def __init__(self): super(DropoutModel,se..

pytorch 2023.04.06

[pytorch] 3. 모델 학습 (파이토치 학습 절차)

모델을 학습을 시킨다는 것은 y = wx + b 라는 함수에서 w와 b의 적절한 값을 찾는다는 것을 의미합니다. w와 b에 임의의 값을 적용하여 시작하여 오차가 줄어들어 전역 최소점에 이를 때까지 파라미터 (w,b)를 계속 수정합니다. 가장 먼저 필요한 절차가 optimizer.zero_grad() 함수를 이용하여 기울기를 초기화하는 것입니다. 파이토치는 기울기 값을 계산하기 위해 loss.backward() 함수를 이용하는데, 이것을 사용하면 새로운 기울기 값이 이전 기울기 값에 누적하여 계산됩니다. 이 방법은 순환신경망(RNN) 모델을 구현할 때 효과적이지만 누적 계산이 필요하지 않는 모델에 대해서는 불필요합니다. 따라서 기울기 값에 대해 누적 계산이 필요하지 않을 때는 입력 값을 모델에 적용하기 전..

pytorch 2023.04.05

[pytorch] 2. 모델 파라미터(손실 함수/ 옵티마이저 / 학습률 스케줄러)

모델을 학습하기 전, 필요한 파라미터들을 정의합니다. 파라미터는 다음과 같습니다. 손실 함수(loss function) : 학습하는 동안 예측값과 실제값의 오차를 구합니다. BCELoss : 이진 분류를 위해 사용 CrossEntropyLoss : 다중 클래스 분류를 위해 사용 MSELoss : 회귀 모델에서 사용 옵티마이저(optimizer) : 데이터와 손실 함수를 바탕으로 모델의 업데이트 방법을 결정합니다. optimizer는 step() 함수를 통해 전달받은 파라미터를 업데이트 함 모델의 파라미터별로 다른 기준(ex.학습률)을 적용시킬 수 있음 torch.optim.Optimizer(params, defaults)는 모든 옵티마이저의 기본이 되는 클래스임 zero_grad() 함수는 옵티마이저에 ..

pytorch 2023.04.04

[python] pandas stack / unstack

# stack / unstack의 형태 dataframe.stack(level = -1, dropna = True) dataframe.stack(level = -1, dropna = True) level : default 값은 -1입니다. 하나의 index 혹은 columns를 쌓을 수준입니다. (한 번에 여러 level을 선택할 수 없습니다.) dropna : default 값은 True 입니다. False로 설정할 경우, nan 값이 출력됩니다. - stack : 칼럼을 인덱스로! 파라미터 level: stack을 수행할 인덱스 레벨을 지정합니다. 여러 개의 레벨을 지정할 수 있으며, 이 경우 데이터프레임이 멀테인덱스를 가지게 됩니다. 기본값은 -1로, 마지막 인덱스 레벨을 사용합니다. dropna:..

python 2023.03.27

[python] dataframe groupby / pivot tabel

gropuby 함수는 저어엉말 자주 사용한다. 그룹별로 어떤 특징을 갖는지 알고 싶을때 주로 사용하는 것 같다. 먼저 이번 포스팅에 예시로 사용할 df_last부터 살펴보자 df_last df_last 는 보다시피 "지역명", "분양가격", "평당분양가격" 으로 이루어진 데이터이다. 만약 지역별로 분양가격과 평당분양가격이 궁금하다면? groupby 함수를 이용해서 구할 수 있다. 지역별 분양가격과 평당분양가격의 평균 df_last.groupby(['지역명']).mean()[['분양가격','평당분양가격']] 결과를 살펴보니 강원의 분양가격의 평균은 2391만원, 평당분양가격은 7890만원이다. 이런식으로 값을 구하면 어떤 지역에 분양가격이 가장 비싼지, 저렴한지를 알 수 있다. sort_values 함수를..

python 2023.03.27
728x90
반응형