반응형

Python 377

[Pytorch] 파이토치 가중치 초기화 방법(Xavier, He)

Python torch Weight Initialization 파이토치에서 Xavier, He 등의 가중치 초기화를 각 layer 별로 혹은 모델 전체에 대하여 진행하는 방법을 간략하게 요약해보도록 하겠습니다. 우선, 다음과 같이 fc1, fc2, fc3의 3개의 layer를 가진 간단한 모델 구조를 가정해 보겠습니다. import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(8, 4) self.fc2 = nn.Linear(4, 2) self.fc3 = nn.Linear(2, 1) def forward(self, x): return sel..

Python/Pytorch 2022.11.30

파이썬에서 yaml 파일을 읽고 쓰는 방법

Python yaml 불러오기, 내보내기 자주 사용되는 데이터 저장 포맷 양식 중 하나인 yaml 파일을 파이썬에서 읽고 쓰는 방법을 간단히 요약해보도록 하겠습니다. yaml 파일 읽기 아래와 같은 내용의 example.yaml 파일이 저장되어 있다고 가정하여 해당 파일을 불러오는 예제를 다루어 보겠습니다. name, age, skills, hobby의 4가지 카테고리에 대한 정보가 담겨있으며, skills는 딕셔너리, hobby는 리스트와 유사한 형태로 정보를 포함한 예시입니다. 위의 yaml 파일을 파싱하기 위한 과정은 다음과 같습니다. 1. 파일을 파싱하기 위하여 먼저 yaml 모듈을 임포트해줍니다. # 미설치 시 !pip install pyyaml 명령어로 설치 import yaml 2. open..

Python/Utils 2022.11.27

[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

파이썬 변수/함수 타입 명시 방법(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

파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy)

파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되지 않았다면 아래 명령어로 설치해줍니다. !pip install nltk 품사 태깅을 위해서는 영어 기준으로 아래의 내부 라이브러리를 설치하는 과정이 필요합니다. import nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger') 위 과정들을 마쳤다면 문장 토큰화 후 pos tagging을 다음과 같이 진행해주시면 됩니다. from nltk import word_tokenize, pos_tag senten..

Python/NLP Code 2022.10.29

TypeError: 'str' object does not support item assignment 해결법

개요 다음과 같은 문자열 a가 있다고 가정해보겠습니다. a = 'abcde' a의 3번 인덱스 위치의 'd'를 'g'로 바꾸려고 시도해보려는데, 다음과 같이 에러가 발생하였습니다. a[3] = 'g' # TypeError: 'str' object does not support item assignment 원인 자료형 종류에는 수정이 가능한 객체인 mutable 타입(리스트, 딕셔너리 등)이 있고, 수정이 불가능한 객체인 immutable 타입(튜플, 문자열 등)이 있는데 문자열은 immutable 자료형이라서 위와 같이 인덱싱(혹은 슬라이싱)을 통한 값 수정이 불가능한 것입니다. 해결 방법 1. 문자열 수동 할당 문자열 덧셈 연산으로 이어 붙이기가 되는 점을 이용하여 재할당을 해주는 방법입니다. 다만, ..

Python/Debugging 2022.10.26
반응형