본문 바로가기

분류 전체보기

(158)
Python ADA boost Binary Classification 바닥부터 구현해보기 Adaboost를 공부할 겸 처음부터 구현해 보았다. 기록 용으로 코딩, 결과, 핵심 alpha 유도 과정을 남겨 둔다. 핵심 포인트: AdaBoost는 동전 던지기에서 앞이 나올 확률(50%보다) 약간 높은 Weak Classifier를 여럿 조합하여 강력한 모델을 만든다. 그림을 보면 Weak Learner는 Iteration1, Iteration2, Iteration 3 밑에 있는 모델이다. Iteration 1은 파란색 3개를 잘못 분류했다. Iteration 2는 빨간색 3개를 잘못 분류했다. Iteration 3은 파란색 2개를, 빨간색 1개를 잘못 분류했다. 하지만 세 모델을 결합하면 하나도 틀리지 않고 분류한다. 0.42, 0.65, 0.92가 alpha 값이다. 각 모델을 0.42 * 모..
파이썬 VIT - Vision Transformer 텐서플로우 코랩 구현 학교 숙제로 VIT을 구현해보라고 한다. 코랩으로 작성하여 코드를 올려 본다. 논문을 읽어 보면서 느낌이 오는대로 작성해 보았다. 사실 구조는 심플하다. 이미지를 패치로 잘라서, 트랜스포머의 인코더 부분에 집어넣는다. 이게 다다. 주의할 점은, 이미지 패치 앞에, CLS라는 사진의 시작을 표시해주는 토큰을 추가해준다. 그리고 트랜스 포머 계층이 끝나고, 클래스를 분류할 때 CLS 토큰에 해당하는 위치만 뽑아서 클래스를 분류해주는 레이어를 추가해 준다. (사진에 0 *을 유의해서 본다) 그리고 CNN에 비해 Hyperparameter 설정에 예민한 듯 하다. 약간의 Learning rate이나, Hidden Layer의 숫자만 바꿔도 성능이 요동친다. 숙제 때문에 급해서 대충 했지만, 자세히 연구해 볼 대..
파이썬 강화학습 CartPole 코드 - Deep Q Learning 작동과정 >> 코랩에서 즉시 찍었더니 깜빡 깜빡 한다^^ 훈련과정 >> 코드 >> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 ..
파이썬 강화학습 - Frozen Lake Colab 상세 코드 강화학습의 기초인 Frozen Lake를 공부하면서 기록 겸 남긴다. 구글 코랩이 상당히 잘 되어있고 사용하기 편리하다. 동작 >> 코드>> import numpy as np import gym import random import time from IPython.display import clear_output # FrozenLake-v0을 gym 환경에서 불러온다 env = gym.make("FrozenLake-v0") action_space_size = env.action_space.n state_space_size = env.observation_space.n q_table = np.zeros((state_space_size, action_space_size)) # 최초 q table # Row ..
파이썬 Matplotlib 동적 그래프 그리기 가끔은 Matplotlib을 동적으로 그릴 필요가 있다. for 구문을 활용하여 그래프가 계속 화면에 렌더링 되도록 만들어 주고, pause(시간) 함수를 써서 제어하면 된다. 코드 >> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import numpy as np import matplotlib.pyplot as plt x = 0 for _ in range(1000): plt.cla() x += 0.1 y = np.cos(x) plt.scatter(x, y) plt.xlim([0,100]) plt.ylim([-1,1]) plt.pause(0.0001) plt.show() Colored by Color Scripter 코드를 실행하면 다음과 같은 matplotlib이 실행된다. 결과 >>
C++ Cuda parallel reduction strategy 코드 >> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 #include..
C++ CUDA Warp 발산 CUDA 연산 시 그래픽카드의 warp size 만큼 동일한 병렬 연산이 이루어 진다. (오해의 소지가 있으니 자세히 말하자면, GPU의 코어 숫자 만큼 병렬 연산이 이루어 진다. 내 그래픽 카드인 RTX2070 super의 코어 수는 2560개 이므로, 최대 2560개의 코어를 동시에 사용할 수 있다. warp_size는 동일 연산이 일어나야 하는 권장 코어 숫자라고 생각하면 쉽다. 2560 / warp_size = 80 이다. 따라서 동시에 80개의 warp들이 병렬 연산이 가능 한데, 80개 중 각각의 warp 에서는 동일 연산이 이루어져야 되는게 좋다는 뜻이다.) 우리가 평소에 잘 사용하는 NVIDIA GTX/RTX nvidia 계열의 그래픽 카드는 warp size가 32다. 만약에 gpu 내부..
C++ Cuda 시스템 정보, GPU 정보 불러오기 cuda 프로그래밍 시, 내 그래픽카드의 스펙을 아는 것은 상당히 중요하다. 그래픽카드 스펙에 따라서 grid size, block size를 효율적으로 정할 수 있기 때문이다. 참고로 multiProcessorCount * warp_size 만큼이 최대로 동시에 실행 가능한 코어 숫자이다. 내 경우에는 그래픽카드로 RTX2070super를 사용하고 있는데 multiProcessorCount는 80이고, warp_size는 32다. 따라서 2560개의 코어에서 동시 실행 가능하다. 코드 >> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ..