본문 바로가기

데이터 과학

Tensorboard에서 Open3D 사용하기 Getting started 데이터 셋 읽기 import open3d.ml.torch as ml3d # construct a dataset by specifying dataset_path dataset = ml3d.datasets.SemanticKITTI(dataset_path='/path/to/SemanticKITTI/') # get the 'all' split that combines training, validation and test set all_split = dataset.get_split('all') # print the attributes of the first datum print(all_split.get_attr(0)) # print the shape of the first point .. 더보기
np.percentile 사용법 numpy.percentile(v, q) 은 q번째 퍼센트의 데이터를 계산한다. 다시 말해 백분위 q에 위치한 값을 계산한다. 길이가 n이 벡터 v가 주어지면, v의 q번째 백분위 수는 v의 정렬된 복사본에서 최소값 ~ 최대값 q/100 이다. 정규화된 순위가 q의 위치와 정확히 일치하지 않는다면, 두개의 가장 가까운 이웃 값과의 거리가 백분위 값이 된다. a = np.array([[10, 7, 4], [3, 2, 1]]) >>> a array([[10, 7, 4], [ 3, 2, 1]]) >>> np.percentile(a, 50) 3.5 >>> np.percentile(a, 50, axis=0) array([6.5, 4.5, 2.5]) >>> np.percentile(a, 50, axis=1) arr.. 더보기
Decision Tree(개념편) 1. Classification Tree 예시 1.1 데이터로 부터 Classification 트리 구성하기 1.1.1 지니 불순도 계산하기 - 열에 대해 최상위 루트 열 판단하기 - 이진 값을 가진 열에 대해 지니 불순도 계산하기 - 수치 값을 가진 열에 대해 지니 불순도 계산하기 2. Regression Tree 예시 2.1 데이터로 부터 Regression 트리 구성하기 (참고 사이트는 아래에 있습니다) 의사 결정 트리(Decision Tree)가 카테고리 분류를 수행하다면 분류 트리(Classification Tree)라 한다. 의사 결정 트리(Decision Tree)가 숫자 값을 예측한다면 회귀 트리(Regeression Tree)라 한다. 1. 분류 트리(Classification Tree).. 더보기
torch_scatter 설치 본인의 경우 python3.8버전에 pytorch는 1.12.1 버전이었고, cuda는 11.6 버전이었다. rusty1s/pytorch_scatter: PyTorch Extension Library of Optimized Scatter Operations (github.com) 에서 Binaries로 설치하기 위해 https://data.pyg.org/whl/ 사이트에서 아래의 설치 파일을 다운 받아 pip로 설치 하였다. 하지만,, 계속 에러가 났다. (이것 때문에 시간을 1시간 30분 낭비하다가...) pytorch를 1.12.0으로 다운그레이드 해주었고(Previous PyTorch Versions | PyTorch), cuda는 11.6 버전 유지. pip install torch==1.12.0.. 더보기
[DOING] Self-Supervised Representation Learning 정리 Self-supervised Learning은 비지도 학습의 하위 분야 (배경) (연구 흐름) - Pretext Task : Unlabeled Dataset을 입력으로 받아서, 사용자가 정의한 문제(Pretext Task)를 네트워크가 학습하게 하여 데이터 자체에 대한 이해도를 높이고자 함. : Pretext Task가 잘 짜여 졌다면, 네트워크가 Input을 효과적으로 Representation 할 수 있을 것으로 가정한다. : Input을 네트워크가 효과적으로 Representation 하였다면, 사용자가 풀고자 하는 문제(Downstream Task)를 Transfer Learning 한다. : 하지만, 이미지가 늘어날 수록 가짓수도 급속히 늘어나는(?) 문제가 존재 - Contrastive Lea.. 더보기
Triplet Loss 구현 Triplet Loss 구현은 아래 2가지로 구성된다. - Pair Wise Distance 계산 + Batch All Strategy 구하는 전략 - Pair Wise Distance 계산 + Batch Hard Strategy 구하는 전략 Pair Wise Distance 계산 - 임베딩 된 것 간의 거리 계산. 임베딩의 차원을 (B, 1) / (1, B)로 늘려 행렬 곱을 하면, 동일 임베딩 간의 제곱 값을 구할 수 있게 된다. tf.diag_part 참고. - Squared 옵션을 사용하지 않는다면, '0' 값을 가진 원소를 Epsilon을 더한 후 Sqrt 연산을 진행한다. def _pairwise_distances(embeddings, squared=False): """Compute the 2.. 더보기
CenterLoss의 구현 CenterLoss는 랜덤으로 정의한 각 클래스 중심으로 부터 샘플이 멀수록 패널티를 주어 클래스간 분리성과 클래스 내의 분산을 줄이는 방법으로 학습되도록 돕는다(Seperable Inter-Class differences and Minimizing Intra-Class variations) Center Loss의 식을 구성하는 각 원소는 아래와 같은 차원을 지닌다. x : (Batch_Size(32), feat_dim(2)) c_yi : (num_classes(10), feat_dim(2)) 의 사이즈를 지닌다. 각 원소의 사이즈가 위와 같을 때 아래의 빨간 박스 부분을 어떻게 코드로 구현하는지 살펴본다. 위의 식을 풀어 쓰면 아래와 같다 (1) 먼저 $x_i$(32 x 2)를 제곱한다 --> 열 방향.. 더보기
Json 파일 읽어 들이는 2가지 방법 파일로 된 Json 데이터를 읽어 들이는 (본인이 알고 있는) 두가지 방법을 정리한다. 1. Json 관련 라이브러리를 이용하는 방법 - https://json-c.github.io/json-c/ - 사용 방법은 다른 포스트에 정리해 놓았다. 2. 파일 스트림을 이용하는 방법 - (1) fstream을 이용해서 파일을 스트림으로 바꾼다. - (2) 파일 스트림을 json 유틸을 이용해서 읽어온다(본인의 경우 사용자가 많은 rapidJson을 이용하였다) #include #include #include #include "rapidjson/document.h" int main() { std::ifstream fIn("test.json"); std::string str; if (in.is_open()) { f.. 더보기