pytorch(35)
-
Pytorch) 모델 가중치 로드 시 테스트 (전체 모델에서 서브 모델 가중치만 가져오기)
상황 조금 더 일반화된 학습을 하기 위해 멀티 타겟에 대한 일반화된 모델을 만들고, 그 모델에서 부분적인 타겟에 대하서 추출할 때 가중치를 잘 가져오는 지에 대한 테스트를 수행해봄. 기대 효과 공유하는 네트워크(Shared Network)가 일반화되게 잘 학습이 되고, 부분적으로 학습시킬 때 좋은 인풋으로써의 기능을 할 수 있지 않을까 함. 방법 각 타겟에 대해서 Dict 으로 키로 관리하고, 나중에 load 시 strict=False를 하면, 알아서 파라미터가 매칭이 안되도 들어갈 것이다라는 생각으로 시작 엄밀하게 제거하는 작업도 있지만, 제거하지 않아도 자동으로 맵핑되는 지 보고 싶었음 코드 중간에 가중치를 임의로 지정하여 테스트 굳이 forward까지 구현하지 않아도 되므로 패스하고 진행한다. im..
2023.09.15 -
[Pyro] Application - 1. Bayesian Regression 이해하기
지난번에 문서를 보면서, 베이지안 학습 방식에 대한 개념과 Pyro 사용법에 대해서 알게 되었지만, 아직 실제로 이러한 방법을 현실에 어떻게 쓰는지 와닿지 않기 때문에 예제와 함께 알아보고자 한다. 이번에는 베이지안 회귀분석 예제를 보고 이해해보고자 한다. 참고 자료 2022.08.21 - [분석 Python/Pyro] - [Pyro] Application - 1. Bayesian Regression 이해하기 2022.08.28 - [분석 Python/Pyro] - [Pyro] Application - 2. Bayesian Regression 이해하기 2 2022.08.28 - [분석 Python/Pyro] - [Pyro] Application - 3. Gaussian Process 이해하기 2022.0..
2022.08.21 -
[Pyro] 개념 파악 및 실습으로 알아보기
요즘 점점 결과가 나올 때 결과에 대한 불확실성에 대한 설명을 많이 필요로 한다는 것을 느끼고 있다. 기존 방식을 사용하면, 근사적으로라도 불확실성을 측정하는 수단(DROPOUT, 등등)이 있는 것 같다. 이제 불확실성이라는 것이 중요한데, 이걸로 구현을 할 수도 있어야 하니, 많은 라이브러리 중에서 토치를 지금 주로 사용하고 있으니 Pyro라는 것으로 사용하고 예제를 보면서, 이 쪽 부분을 이해하고자 한다. 미적분이 변화의 속도에 대한 추론을 위한 수학인 것처럼, 확률은 불확실성 하에서 추론의 수학이다. 그것은 현대 기계 학습과 AI의 많은 부분을 이해하기 위한 통일된 이론적 프레임워크를 제공한다. 확률 언어로 구축된 모델은 복잡한 추론을 포착하고, 모르는 것을 알고, 감독 없이 데이터에서 구조를 밝힐..
2022.08.20 -
Pytorch) multioutput Regression 구현해보기
Pytorch에서 multioutput regression을 구현해보고자 한다. 구현하게 된 이유는 sckit-learn에서 RegressorChain이라는 것을 보고 도움이 될 것 같아서 해보려고 한다. 실제 구현된 코드를 보니 다음과 같이 구현이 되어 있었다. 구현된 방식은 Chain인 경우에 X에다가 y 예측값을 붙이고, 또 그것을 사용해서 다시 y를 예측하는 방식이었다. 이 부분을 참고해서 딥러닝이다 보니 약간은 다르게 구현을 해봤다. class _BaseChain(BaseEstimator, metaclass=ABCMeta): def __init__(self, base_estimator, *, order=None, cv=None, random_state=None): self.base_estimat..
2022.03.26 -
torchfunc) titanic data에 model parallel training 해보기
jax 예시로 나온 것처럼 소규모 네트워크를 빠르게 학습시키는 방법에 대해 공유합니다. 소규모 네트워크를 훈련하는 경우 병렬화의 근본적인 한계에 부딪힙니다. 확실히 2계층 MLP는 ResNet-50보다 훨씬 빠르게 실행됩니다. 그러나 ResNet에는 약 4B의 곱셈 누산 연산이 있는 반면 MLP에는 100K만 있습니다.1 우리가 원하는 대로 MLP는 ResNet보다 40,000배 더 빠르게 훈련하지 않으며 GPU 사용률을 검사하면 그 이유를 알 수 있습니다. . GPU의 ~100%를 사용하는 ResNet과 달리 MLP는 2-3%만 사용할 수 있습니다. 더 많은 컴퓨팅을 병렬로 사용하는 한 가지 방법은 배치 크기를 늘리는 것입니다. 예를 들어 128개 요소의 배치를 사용하는 대신 GPU를 채울 때까지 이를..
2022.03.26 -
Pytorch 1.11 이후) functorch 알아보기
22년 3월 14일 기준 현재까지는 Beta 버전입니다. Google JAX에서 크게 영감을 받은 functorch는 구성 가능한 함수 변환을 PyTorch에 추가하는 라이브러리입니다. PyTorch 모듈 및 PyTorch autograd와 함께 작동하는 구성 가능한 vmap(벡터화) 및 autodiff 변환을 우수한 eager-mode 성능으로 제공하는 것을 목표로 합니다. 구성 가능한 함수 변환은 오늘날 PyTorch에서 수행하기 어려운 여러 사용 사례에 도움이 될 수 있습니다. computing per-sample-gradients (or other per-sample quantities) running ensembles of models on a single machine efficiently b..
2022.03.14 -
Pytorch 1.11 이후) torchdata 알아보기
3월 14일 버전에서는 현재 Beta Stage이고 Stable하지 않다고 합니다. 개인적으로 tensorflow에서는 dataset이라는 기능을 통해 큰 데이터를 다 불러오지 않고, 부분적으로 불러오게 하는 기능이 있는데, torch 이전까지 버전에서는 그런 기능들을 제공하지 않아 아쉬웠는데, 이렇게 반가운 기능이 나와 공유합니다. What are DataPipes? 초기에 우리는 재사용 가능한 로딩 도구를 나타내는 PyTorch DataSet 사이의 광범위한 혼란을 관찰했다고 합니다. DataPipe는 단순히 합성된 사용을 위해 PyTorch DataSet의 이름을 바꾸고 용도를 변경하는 것입니다. DataPipe는 Python 데이터 구조에 대한 일부 액세스 함수, IterDataPipes의 경..
2022.03.14 -
Python) Cora dataset을 활용하여 Link Prediction
Objective GNN을 사용하여 어떻게 Link Prediction을 할 수 있는지에 대해서 알아보고자 함. Introduction 많은 예제들이 보통 node 분류를 하는 데, GNN 많은 예제들이 있고, Link Prediction을 다루는 예제는 많이 없다. 개인적으로 Node 분류도 관심이 있지만, Edge를 어떻게 예측하는지 관심이 있어 시작하게 되었고 여기서는 어떻게 예측을 하는지 알아보고자 한다. DataSet 여기서는 자주 사용하는 Cora 데이터 세트로 진행하려고 한다. 이 데이터의 Node와 Edge의 의미는 다음과 같다. Node 머신러닝 논문 Edge 논문 쌍 간의 인용 즉 이 논문은 인용 그래프를 나타낸다고 할 수 있다. Node (Node Classification) 논문 분..
2022.01.29 -
Python) Fraud detection with Graph Attention Networks
목차 Objective 이 글의 목적은 Fraud Detection과 GNN을 결합하는 방식을 배우기 위해서 글을 작성해봅니다. Introduction to Fraud Detection 사기 탐지(Fraud Detection)는 기업이 승인되지 않은 금융 활동을 식별하고 방지할 수 있도록 하는 일련의 프로세스 및 분석입니다. 여기에는 사기성 신용 카드 거래, 도난 식별, 사이버 해킹, 보험 사기 등이 포함될 수 있습니다. 사기는 누군가가 속임수나 범죄 활동을 통해 귀하의 돈이나 기타 자산을 빼앗을 때 발생합니다. 결과적으로 효과적인 사기 탐지 시스템을 갖추면 기관에서 의심스러운 행동이나 계정을 식별하고 사기가 진행 중인 경우 손실을 최소화하는 데 도움이 될 수 있습니다. ML 알고리즘을 기반으로 하는 사..
2022.01.28 -
pytorch 1.8.0 램 메모리 누수 현상 발견 및 해결
실험을 하다가 램을 확인하는데 엄청나게 많이 쌓이는 것을 확인하였다 memory_profiler로도 확인을 해보니 forward를 할 때마다 램이 계속 쌓이는 현상이 발견되서 이것 저것 실험을 해도 계속 같은 증상이 나왔다. 그래서 마지막으로 패키지 버전은 올려봤다 현재 21.12 월 기준 최신버전인 1.10.1+cpu 버전으로 진행하니 해결되었다. 앞으로 이런 버그가 있는 경우 최후의 수단으로 패키지를 업그레이드 혹은 다운그레이드 해보는 것도 좋아보인다 끝
2021.12.18 -
einsum 알아보기
목차 개념 가끔 보면 einsum을 홍보하는 글을 보거나 코드에서 본 것 같다. 처음에는 대수롭지 않게 생각을 했는데, 좀 더 자세히 보니 매력적인 부분이 많은 것 같아 알아보려고 한다. 특히 매력적인 부분은 이것만 알고 있으면 numpy , pytorch, tensorflow 다 동일하게 적용할 수 있다는 점이다. 선형 대수학은 딥러닝 분야에서 근본적인 역할을 하는데, 아직까지는 춘추전국시대라서 통일된 라이브러리가 없고 계속 생겨나는 시점이라 이럴수록 하나로 통일해주는 것을 배우면 좋을 것 같다고 생각했다. 그리고 잘만쓰면, 복잡한 연산도 쉽게 구현할 수 있는 것 같아서 좋은 것 같다. einsum 연산을 통해서, 행렬 내적, 외적, 내적, 행렬곱 등을 동일한 형태로 할 수 있다는 것이 참 매력적인 부..
2021.12.07 -
GNN) GAT Layer Implementation
GAT는 Attention Aggregator를 사용하는 방식으로 위치는 다음과 같다. GAT Layer 구현한 것을 따라 시행해봤다. Equation (1) is a linear transformation of the lower layer embedding $h_i^{(l)}$ and $W^{(l)}$ is its learnable weight matrix. This transformation is useful to achieve a sufficient expressive power to transform input features (in our example one-hot vectors) into high-level and dense features. Equation (2) computes a pai..
2021.07.03