반응형

분류 전체보기 505

[Scipy] 파이썬 희소 행렬 변환(CSR, COO, DOK), 배열 역변환, 연산 방법 정리

Python Sparse Matrix 파이썬에서 0의 비중이 높은 행렬인 희소 행렬을 효율성을 위하여 3가지 대표 방법인 CSR, COO, DOK 방법으로 변환할 수 있는 Scipy의 기능을 살펴보고 배열 역변환 및 연산에 관한 예제도 같이 정리해보도록 하겠습니다. 희소 행렬 변환 방법(CSR, COO, DOK) 먼저, CSR, COO, DOK의 3가지 희소 행렬 표현 방법에 대해서 간략하게 설명하겠습니다. CSR : 각 row별로 0이 아닌 개수의 누적합을 이용해서 어느 행에 속하는지를 추적하고, 인덱스 번호(열의 위치)는 따로 저장하여 각 데이터가 저장된 위치를 찾는 방식입니다. 참고로, CSR은 연산이 빠르다는 장점 덕분에 많이 사용되는 방식입니다. COO : 0이 아닌 데이터가 저장된 위치의 ro..

Python/Scipy 2022.11.24

[Pytorch] 파이토치 Conv1d, Conv2d 원리 비교

Python torch Conv1d vs Conv2d 파이썬 파이토치에서 convolution을 수행하는 layer 종류인 Conv1d, Conv2d에 대하여 두 종류의 원리와 사용법 차이를 비교해보도록 하겠습니다. Conv1d 예제 및 원리 Conv1d는 1차원 벡터 여러개에 대하여 한 방향으로 움직이며 컨볼루션 합을 진행하는 layer로 대표적인 예시로 자연어 처리에서의 단어 토큰 임베딩의 컨볼루션을 들 수 있습니다. 이해를 돕기 위하여 아래의 상황을 가정한 예시를 그림으로 나타내보겠습니다. sequence length = 5(한 문장은 5개의 단어 토큰으로 구성됩니다.) input dimension = 7(각 토큰을 7차원 임베딩으로 표현합니다.) kernel size = 2(이웃한 2개 토큰의 임..

Python/Pytorch 2022.11.22

[Pytorch] 파이토치 RNN 계열 layer 원리 이해해보기

Python torch RNN, LSTM, GRU 사용법 파이썬 파이토치에서 RNN 계열 layer들의 input, output 형태를 기준으로 layer 개수 및 양방향 여부에 따른 원리를 이해하기 쉽게 설명해보도록 하겠습니다. 1. 기본 RNN, 단층, 단방향 먼저, 가장 기본적인 경우로 일반 RNN이며 single layer, unidirectional인 경우의 예제를 살펴보도록 하겠습니다. 상황은 다음과 같이 가정하겠습니다. sequence length = 2,(아래 그림에서 빨간색, 분홍색 순서입니다.) batch size = 4, input dimension = 5,(각 데이터는 5차원이며, 각 숫자는 x로 표시했습니다.) output dimension = 3 이 경우에 input의 최종 sh..

Python/Pytorch 2022.11.20

[C언어] 동적 할당 원리 및 방법(malloc, calloc, realloc) 정리

C언어 동적 메모리 할당(Dynamic Memory Allocation) 동적 할당 원리, 정적 할당과의 비교 동적 할당을 다루기 전에 먼저 기본적인 정적 할당 방법을 살펴보겠습니다. #include int main(){ // 배열 선언(정적 배열 선언) int arr[5]; // 값 할당 예시 arr[0] = 1; arr[1] = 3; arr[2] = 5; } 위와 같이 처음에 5칸으로 배열의 크기를 지정하여 선언하는 방식입니다. 이 경우에는 컴파일 단계에서 자동으로 메모리를 할당해 주는데요. 스택 영역에 메모리 공간을 배정받게 되어 고정된 칸 수만 가질 수 있습니다. (쉽게 생각하면 스택 중간에서 갑자기 차지하는 공간을 늘리거나 줄이는 것이 쉬운 작업은 아니라는 것을 직감하실 수 있을 것입니다.) 이..

C & C++ 2022.11.18

파이썬 변수/함수 타입 명시 방법(Type Hints)

Python Type Hints 파이썬에서 코드 작성 시에 변수 및 함수 input/output 자료형에 대해 알림 기능을 해줄 수 있는 Type Hints 기능에 대하여 살펴보도록 하겠습니다. 변수 선언 시 타입 명시 방법 파이썬에서는 변수의 자료형에 제한이 없어 기존의 방법대로 변수를 선언할 경우 아래처럼 기존 자료형과 다른 타입의 값을 넣는 것에 제약이 없습니다. a = "abcde" # 문자열로 선언된 변수 a a = 400 # 정수형 등 다른 자료형의 값을 할당하는 것에 제약이 없음 만일 문자열로 선언된 변수에 대하여 문자열이 아닌 다른 타입의 값으로 재할당될 경우 경고 메시지를 주고 싶다면 아래와 같이 Type Hints 방법을 적용할 수 있습니다. # 변수명: 자료형 = 값 a: str = ..

[Tensorflow] 텐서플로우 모델 구조 시각화 방법 : tf.keras.utils.plot_model

Visualize Tensorflow/Keras Model Structures 텐서플로우에서 구현된 모델의 구조를 plot_model 메소드를 통하여 쉽게 시각화할 수 있는 방법에 대하여 살펴보도록 하겠습니다. 먼저, 예시로 아래와 같이 간단한 CNN 구조의 모델이 있다고 가정해보도록 하겠습니다. from tensorflow.keras import models, layers # CNN 구조 모델 예시 model = models.Sequential() model.add(layers.Conv2D(5, 3, strides = 1, padding = 'same', activation = 'relu', input_shape = (28, 28, 1))) model.add(layers.MaxPooling2D(pool..

Python/Tensorflow 2022.11.12

파이썬 개체명 태깅(NER Tagging) 방법 정리(nltk, spacy)

지난번에 nltk 및 spacy 모듈을 통하여 품사 태깅(POS Tagging) 방법을 다루었던 글에 이어 이번에는 두 모듈로 개체명 태깅(NER Tagging)을 진행하는 방법을 살펴보도록 하겠습니다. 품사 태깅 방법과 관련된 내용은 아래 글을 참고해주세요. 파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy) 파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되 jimmy-ai.tistory.com nltk를 활용한 NER Tagging 방법 nltk에서 개체명 태깅을 진행하려면 품사 태깅이 선행되어야 ..

Python/NLP Code 2022.11.09

Batch Size와 학습 시간, 메모리 사용량의 관계

배치 크기가 커지면 학습 시간 및 GPU 메모리 사용량은 어떻게 될까요? 배치 크기가 커지면 학습 시간은 계속 줄어들까요? GPU 메모리 사용량과는 어떤 관계가 있을까요? 우선, 제가 가진 학습 코드를 통해 간단하게 실험해본 결과는 다음과 같습니다. Batch Size = 1 데이터가 약 89000개 정도이므로, 1 epoch 당 89000 스텝이 진행되고, 예상 학습 시간은 1시간 45분 정도였습니다. 모델 파라미터 + 데이터 1개 텐서 = 2207MB 정도의 메모리가 사용되는 것을 보았습니다. Batch Size = 2 89000개의 절반인 약 45000 스텝 정도가 1 epch에 진행됩니다. 학습 예상 시간은 1시간 24분 정도로 약간 줄었으나, Batch Size = 1인 경우에 비하여 절반으로 ..

머신러닝 분류 알고리즘 종류별 장단점 정리

머신러닝에서 대표적으로 사용되는 분류(Classification) 알고리즘들에 대하여 종류별로 장단점을 간략하게 정리해보도록 하겠습니다. 1. 의사결정나무(Decision Tree) 장점 1. 결과가 나온 과정을 쉽게 추적할 수 있어 설명 가능성이 높다. 2. 정규화 과정이 필요 없고, 데이터의 분포에 상관 없이 적용 가능하다. 3. 범주형, 연속형, 이산형 변수 모두를 다룰 수 있다. 단점 1. 과적합에 매우 취약하여 가지치기가 중요하다. 2. 시계열 데이터나 고차원 데이터에는 적용하기 어렵다. 3. 경계값 근처에서 오류가 발생하기 쉽다. 2. 랜덤포레스트(Random Forest) 장점 1. 의사결정나무의 2, 3번 장점을 그대로 가져갈 수 있다. 2. 의사결정나무의 과적합 문제를 보완할 수 있다. ..

Batch Normalization vs Layer Normalization 정의, 장단점 비교

이번 글에서는 딥러닝에서 많이 활용되는 대표적인 성능 개선 기법인 배치 정규화와 레이어 정규화에 대해서 정의와 장단점을 비교해보도록 하겠습니다. 먼저, batch size = 3인 빨강, 파랑, 초록 데이터가 아래와 같이 A, B, C, D라는 4개의 feature의 값들로 구성되어 있는 상황을 가정해보도록 하겠습니다. Batch Normalization 정의 배치 정규화는 각 feature에 대하여 mini-batch 내의 평균, 분산을 구해서 정규화를 진행해주는 방법입니다. 위 그림의 데이터에 적용한 예시는 다음과 같습니다. 각 feature에 대한 평균과 분산 값들을 이용하여 기존 값 x를 새로운 값 y로 정규화를 해줍니다. (각 layer를 통과한 값마다 적용이 가능합니다.) (ε은 분산이 0이라..

반응형