Python 83

[OpenCV] Image Registration Processing

Image Registration은 동일한 장면의 서로 다른 이미지를 정렬하는데 사용하는 기술 중 하나이다. 고정된 이미지(Fixed Image)가 있고, 움직인 이미지가 있다면, 움직인 이미지를 고정된 위치로 옮기는 것을 말한다. 이미지가 회전되어 있거나, 일부 잘려있거나 할 때도 사용이 가능하다. Image Registration을 수행하기 위해 MVTec AD Dataset을 예시로 가지고 왔다. import os, sys, cv2, glob import matplotlib.pyplot as plt paths = glob.glob(os.path.join('dataset/hazelnut/train/good/*.png')) path = paths[0] imgs = cv2.imread(path) imgs..

Python/OpenCV 2023.07.05

[Pytorch] pytorch에서 value count 하는 법

Pandas 내에는 value_count() 라는 함수를 통해 데이터 프레임 내의 값을 카운팅 할 수 있다. Numpy 에서는 collection.Counter 등의 함수를 이용하여 몇 개가 있는지를 확인할 수 있다. Pytorch에서는 bincount라는 함수로 대체할 수 있다. import torch samples = torch.tensor([1, 1, 2, 1, 3, 3, 3], dtype=torch.long) torch.bincount(samples) # tensor([0, 3, 1, 3]) samples.dtype # torch.int64 당연하게도, LongTensor 인 경우에만 가능하다. FloatTensor의 경우 갯수를 확인하는 것이 불가능하기 때문에, LongTensor로 제대로 데이..

Python/Pytorch 2023.06.30

[Pytorch] Neural Graph Collaborative Filtering (NGCF) 구현하기

Contents Neural Graph Collaborative Filtering (NGCF)는 기존의 협업 필터링(Collaborative Filtering)이 고차-연결성(High-Order Connectivity)을 고려하지 못한다는 단점을 극복하고자 그래프를 협업 필터링에 도입 시킨 기법이다. 전통적인 협업 필터링은 user-item interaction만을 고려하게 된다. 대표적인 Neural Collaborative Filtering (NCF)를 생각해보면 사용자 ID와 제품 ID를 내적하거나 연결(Concatenate)하여 사용자의 제품에 대한 구매 확률을 도출한다. 그렇기 때문에 제품과 다른 사용자 간의 관계 즉, 고차-연결성을 고려하지 못한다는 것이다. 예를 들어 $u_1 \leftarr..

Python/Pytorch 2023.01.01

[Pytorch] Transformer 구현하기

Contents Transformer는 자연어 처리(Natural Language Processing, NLP) 분야에서 성능이 우수한 것으로 검증된 대표적인 Self-Attention 모델이다. 기존 Sequential Based 모델인 RNN, LSTM, GRU 등과 같은 모델에 비해 매우 우수한 성능을 보여주고 있으며, BERT, GPT 등의 사전 학습 기반 모델이 Transformer의 골조를 활용하였다. 이번 글에서는 Transformer의 Encoder와 Decoder가 어떻게 구성되어 있는지 짧은 코드를 통해 알아보자. Import Package Transformer는 HuggingFace 에서 지원하는 transformers 패키지와 PyTorch를 이용하여 구현할 것이다. 따라서, 구현에..

Python/Pytorch 2022.12.20

[Pytorch] RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling

CUBLAS_STATUS_NOT_INITIALIZED 에러는 nn.Embedding에 원래 값보다 큰 값이 들어갔을 때 발생하는 에러다. 예를 들어, 사용자의 수는 100명이고, 제품의 수는 50개라고 하자. 그렇다면 아래와 같은 코드로 nn.Embedding을 생성할 수 있을 것이다. class Model(nn.Mudule): def __init__(self, num_users, num_items, latent_dim): self.num_users = num_users self.num_items = num_items self.latent_dim = latent_dim self.user_embedding = nn.Embedding(self.num_users, self.latent_dim) self.ite..

Python/Pytorch 2022.12.05

[Transformers] Bert Tokenizer 알아보기

Contents Transformers 패키지는 자연어처리(NLP) 분야에서 엄청 많이 사용되는 패키지 중 하나이다. BERT 등과 같은 모델을 구축할 때 Transformers 패키지를 사용하면 매우 편하게 구축할 수 있다. 이번 글에서는 Transformers에 존재하는 BERT에서 사용하는 tokenizer 함수를 뜯어본다. BertTokenizer BertTokenizer는 PreTrainedTokenizer를 상속받는다. PreTranedTokenizer는 나중에 알아보도록하고, 단순히 사전 학습된 tokenizer 정도로 이해하면 된다. BertTokenizer 내에는 vocab_file, do_lower_case, unk_token 등 다양한 파라미터들이 존재하는데, 중요한 파라미터 위주로 ..

Python/Transformers 2022.12.04

[Pytorch] BERT로 감성 분석하기. 기초 설명까지

Contents BERT(Bidirectional Encoder Representation from Transformers)는 Transformer를 기반으로 양방향 학습을 하는 사전학습 모델이다. 사전학습 모델이란 미리 사전에 많은 양의 코퍼스를 학습하고, 그 후 파인튜닝(Fine-tuning)을 통해 본인이 사용하고자 하는 도메인에 적용하는 모델이다. Transformer가 나오기 이전에도 Bi-LSTM 등과 같이 양방향 학습 모델이 존재했지만, 사전 학습 모델은 아니었으며, BERT는 Self-supervised Learning 중 하나인 Making 기법을 사용하여 학습의 성능을 향상시키고, 지금까지도 많이 사용된다. 이번 글에서는 BERT를 사용하는 방법에 대해서 알아보고, 각 코드가 어떤 의미..

Python/Pytorch 2022.12.03

[Pandas] set_categories 사용하기.

추천 시스템을 구축할 때 데이터를 학습 데이터와 검증 데이터 그리고 테스트 데이터로 분할하여 사용한다. 이때 학습 데이터는 모델을 학습하기 위한 용도로 사용하고 검증 데이터는 모델의 하이퍼 파라미터를 최적화하기 위해 사용한다. 마지막으로 테스트 데이터는 최종 모델의 성능을 확인하는 용도로 사용한다. 추천 시스템을 구축할 때 만약 검증 데이터와 테스트 데이터에는 존재하지만 학습 데이터에는 존재하지 않는 사용자의 경우 학습한 데이터가 없기 때문에 실제 사용자에게 제품을 추천할 수 없게 된다. 따라서, 학습 데이터에 존재하는 사용자를 기반으로 실험을 진행하는 것이 중요하다. 이때 사용되는 것이 바로 Pandas에 set_categories 함수이다. sample = pd.DataFrame({'user_id':..

Python/Pandas 2022.12.03

[Pytorch] Learning Rate Scheduler 사용하기

Contents 학습률(Learning Rate)은 모델을 학습하기 위해서 필수적인 요소다. 학습률을 너무 크게 설정한다면, 최솟값에 도달하는 것이 어려우며, 너무 작게 설정하면, local minimum에 빠지거나 학습에 진전이 없을 수 있다. 이번 글에서는 학습률에 Schedular를 설정해서 학습률을 감쇠(Decay)하는 패키지를 다루어볼 것이다. Import Packages import torch import torch.nn as nn from torch.optim.lr_scheduler import StepLR import torch.optim as optim from torch.utils.data import DataLoader import torchvision.transforms as tra..

Python/Pytorch 2022.11.17
반응형