What is Thread? 코딩을 하다 보면 언어가 멀티 태스킹 (multi-tasking), 멀티 스레드 (multi-thread)를 지원한다는 얘기를 들어봤을 거다. AI 언어로 인기를 받는 파이썬도 AI 분야에서 이루어지는 많은 계산을 빨리 하기 위해서 병렬을 가능케 하는 Multi-Tasking과 Multi-Threading을 지원한다. 운영체제 내부에서 응용 프로그램이 작동할 때 응용 프로그램을 프로세스(Process)라 부른다. Multi-Tasking은 운영체제가 여러 process를 동시에 실행하게 하고, Multi-Threading은 process안에서 여러 개의 thread를 동시에 실행한다. Thread는 일하는 노동자 수라고 보면 된다. 따라서 많을수록 동시에 다양한 일을 빨리 많..
OpenGL Space 개념 Local Space / World Space / View Space / Clip Space / Screen Space 좌측부터 OpenGL 좌표계에 가까운 단계이며, 우측인 Screen Space는 말 그대로 우리가 컴퓨터 화면을 통해 보는 스크린의 좌표계이다. 이번 글에서는 이 공간들에 대해 차근차근 알아보자. 아래 그림에서 좌표계의 축들은 실제 OpenGL 축과 밀접한 관련은 없으니 그냥 이해를 위해 보도록 하자. Local Space 가장 첫번째 단계인 Local Space다. 나의 object의 시작 단계라고 보면 된다. object의 시작 단계라고 생각하니, object를 구성하는 모든 점들의 좌표가 (0, 0, 0)으로 이해하니 이상하다. 필자의 해석으로는 '관찰..
기본 요구 사항 본 블로그는 C++ 언어, Windows 운영체제를 기반으로 OpenGL 을 공부한다. What is OpenGL? OpenGL은 주요 키워드는 cross-platform, state machine 이다. cross-platform은 Ios, Android, Windows, Linux 등 각종 운영 체제에서 사용 가능하다는 뜻이며, state machine은 어떤 상태를 저장하여 출력하는 기계라고 생각하자. 학습을 하면서 더 와닿게 된다. 기본적으로 OpenGL은 version 3.3에서 극적으로 바뀐다. version 3.3 이전에는 Immediate Mode를 통해 손쉬운 방법이 가능했지만, OpenGL 3.3을 기점으로 Core-Profile이라는 모드가 생겼다. Immediate ..
Generative Model (생성형 모델) 중 하나인 ChatGPT가 AI의 잠재력을 전세계에 퍼뜨리고 있다. 개인적인 생각으로 만든 사람도 정확히 ChatGPT가 어떻게 학습이 가능한 지에 대한 설명을 할 수는 없다고 생각한다. Model의 layer, weight들이 학습되는 형태는 처음에 초기값을 어떻게 잡는 지, 어떤 activation function을 쓰는 지에 따라 다르며, chatGPT처럼 데이터가 많게 되면 더더욱 설명하기는 어렵다. 우리가 ChatGPT의 원리를 정확히 알 수는 없더라도 생성형 모델의 기본적인 유형 중 하나인 Autoencoder에 대해서 먼저 보도록 하자. Autoencoder는 encoder 부분과 decoder 부분으로 나뉜다. Encoder는 latent sp..
2023.04.02 - [Computer Science/Python] - [AI-Pytorch Python] 선형 회귀 정복 및 실습 (1) (Kill Linear Regression Using Pytorch) [AI-Pytorch Python] 선형 회귀 정복 및 실습 (1) (Kill Linear Regression Using Pytorch) 머신러닝, 인공지능 소식을 접하면 심심치 않게 회귀라는 말을 접한다. 회귀란 뭘까? 회귀:한 바퀴 돌아서 본디의 자리로 돌아옴. [출처: Oxford Languages] 데이터를 다루는 머신러닝 입장에서 보면, greedy-engineer.tistory.com 이 글을 보기 전에 이해를 돕기 위해 전 글을 보고 오기를 추천한다. 필요 라이브러리 다운로드 from..
기본 가정 (Input Data:X, Output Data: Y) 인공지능 모델에서 갖고 있는 데이터(input data)를 X, 추출하는 데이터(Output data)를 Y라고 한다. 인공지능 모델에서 우리는 P(X) X가 일어날 확률보다는 P(Y|X) X가 발생했을 때 output인 Y가 발생할 확률을 구하는 것을 목표로 한다. Bayes Theorem (베이즈 정리) 확률 이론이 여기서 왜 나오나 싶겠지만, 인공지능의 기반이 확률이기에 확률 및 통계는 빠질 수 없다. 특히 조건부 확률 이 글이 다룰 내용에서 많은 비중을 차지하기에 먼저 다루기로 한다. Bayes Theorem을 간략히 정리하면 사전 확률 (prior probability)를 이용하여 사후 확률(posterior probability..
머신러닝, 인공지능 소식을 접하면 심심치 않게 회귀라는 말을 접한다. 회귀란 뭘까? 회귀:한 바퀴 돌아서 본디의 자리로 돌아옴. [출처: Oxford Languages] 데이터를 다루는 머신러닝 입장에서 보면, 흩어져 있는 데이터들이 자신의 자리로 돌아간다고 할 때, 이를 가장 잘 설명하는 선형의 그래프를 찾는 게 선형 회귀의 목표이다. 쉬운 말로 하면, 데이터의 흩어져 있는 모습과 유사한 형태의 선형 그래프를 찾으면 된다. 일변수 함수의 선형 회귀 분석 데이터 생성 본격적으로 회귀 분석을 하기 위해 데이터를 생성해 보자! 선형 회귀 분석을 하기 위해 데이터의 전체적인 경향을 나타내는 선형 함수를 하나 만들자. y = ax+b 의 형태로 중학교 수학을 배웠다면 누구나 아는 함수이다. 데이터가 이 선형 함..
이 글은 단계별로 쓰여진 글이며 첫번째 단계를 보기 위해서는 아래 게시글을 참고 바람! 2023.03.27 - [Computer Science/Python] - [AI OpenCV-Python] SIFT를 통한 이미지 특징 추출 (1) (Image Feature Extraction/Matching Using SIFT) [AI OpenCV-Python] SIFT를 통한 이미지 특징 추출 (1) (Image Feature Extraction/Matching Using SIFT) 이 글은 Google Colab 환경에서 실행 되었습니다. !cat /etc/*release 출력: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DES..
이 글은 Google Colab 환경에서 실행 되었습니다. !cat /etc/*release 출력: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.5 LTS" NAME="Ubuntu" Google Colab의 환경은 Linux Ubuntu이니 참고한다. OpenCV? OpenCV는 컴퓨트 비전 라이브러리로 컴퓨터가 이미지를 인식하거나 다루는데 쓰이는 라이브러리이다. C++ 언어로 쓰였고, python wrapper인 OpenCV-python 을 이용하여 python으로도 조작이 가능하다. 이미지를 다루는 데에 array를 기본적으로 사용하여 data structure가 numpy..
쓰는 이유 순전히 내가 보기 위해 쓰고, 이 글로 누군가 궁금증을 해소할 수 있을 거라고 생각하지는 않는다. 그래도 나 같이 주식이 처음이고 어떻게 해야 되는지 모르는 사람이 보면 첫 시작으로 좋을 수 있다고 생각한다. NewJeans 투자하려는 너! 왜 미국 주식인가? 미국은 기본적으로 시장이 크다. 전세계의 돈이 몰리기 때문에 미국이 망하면 세상이 망할 가능성이 크다. 나 같은 소액 투자자는 큰 흐름에 타면서 치고 빠지기만 잘해도 어느 정도의 돈은 모을 수 있다고 생각한다. 한국의 ETF는 미국보다 기본적으로 배당금도 적고, 미국 ETF 시장보다 덜 발달되어 있다. 물론 매번 환전해야 하는 번거로움이 있지만 한국에만 있을 생각이 없는 나에게는 크게 상관 없다고 생각한다. 심지어 배당금도 달러로 들어오..
tensorflow: 머신러닝을 효과적으로 하기 위한 파이썬 프레임워크이다. 앞선 글 중에, pytorch 프레임워크, scikit-learn 라이브러리를 다룬 내용이 있으니 먼저 보고 오자! 2023.03.20 - [Computer Science/Python] - [AI PYTORCH] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기) [AI pytorch] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기) scikit-learn을 해봤으니 한 단계 업그레이드 된 프레임워크 'pytorch'로 구현을 해보자. 좀 더 깊은 이해를 위해 scikit-learn을 참고하고 와도 좋다! 2023.03..
scikit-learn을 해봤으니 한 단계 업그레이드 된 프레임워크 'pytorch'로 구현을 해보자. 좀 더 깊은 이해를 위해 scikit-learn을 참고하고 와도 좋다! 2023.03.17 - [Computer Science/Python] - [AI scikit-learn] Machine Learning. 숫자(0-9) 손 글씨체 구분 (Classfying Handwritten digits) (MNIST) [AI scikit-learn] Machine Learning. 숫자(0-9) 손 글씨체 구분 (Classfying Handwritten digits) (MNIST) 이번 주제는 google colab에서 실행된다. google drive 가 있다면 google colab은 좋은 선택지이며, py..
이번 주제는 google colab에서 실행된다. google drive 가 있다면 google colab은 좋은 선택지이며, python언어와 그 안에 있는 ML 라이브러리 (sklearn, numpy, pandas.. 등등)을 지원한다. 오늘은 0 부터 9까지의 숫자를 구분하는 Neural Network를 만들어본다. 1. 먼저 sklearn 에서 지원하는 데이터를 가져오자 # Loading an example dataset & preprocessing from sklearn.datasets import load_digits import numpy as np data = load_digits() print(data.keys()) # dict_keys(['data', 'target', 'frame', ..
우리 주위에는 굉장히 많은 벡터장이 있다. 중력장, 자기장, 전기장... 등등. 공학자는 자기 분야에 해당하는 벡터장에서 어떠한 물체가 어떻게 운동하는지 알 수 있어야 한다. 이번에는 벡터장 안에서 곡선이 어떻게 적분 되는 지를 판단해 보자. 먼저 곡선의 식 r(t)와 벡터장 F(x, y)의 식은 아래와 같다. 이 두 함수를 이용하여 문제를 풀어보자. 1. 함수 정의 syms F1(x,y) F2(x,y) r1(t) r2(t) r1(t) = cos(t); r2(t) = sin(t); F1(x,y) = -y; F2(x,y) = -x*y; r = [r1;r2]; F = [F1;F2]; r과 F 모두 symfunc이며 각각 >> r >> F r(t) = F(x, y) = cos(t) -y sin(t) -x*y을..