- [직접 구현하는 머신러닝] K- 평균 (K-Means)Cat_Code오늘은 K-평균 알고리즘 (K-Means)를 Python으로 직접 구현해 보겠다 필요한 라이브러리는 Numpy 하나이다 K-Means 알고리즘의 과정을 순서대로 나타내면 아래와 같다 1. 데이터 공간에서 임의의 k개 중심점을 초기화 한다 (랜덤 선택), 여기서 중심은 클래스 또는 범주에 해당한다. 즉, 이 중심점을 기준으로 해당 데이터의 클래스가 결정되는 것이다. 이때, k는 하이퍼 파라미터로 직접 지정해주어야한다. 2. 각 데이터 관측치와 각 중심 사이의 유클리드 거리를 계산한다. - 모든 데이터와 각 중심점 사이의 각각 거리를 구하는 것 3. 각 데이터 관측치를 가장 가까운 중심의 그룹에 할당한다 - 즉, k=3이라고 가정을 한다면 1점과 data들의 거리 2점과 data들의 거리, 3점과 데이터의 ..
- 2023-11-20 18:45:24
- [궁금한건 못참아]라이브러리 vs. 직접구현Cat_Code피어슨 상관계수와 코사인 유사도에 글을 정리하던 중 이미 해당 공식들은 numpy나 scipy에 존재했다 피어슨 상관계수? [머신러닝+선형대수] 상관관계와 코사인 유사도 통계와 머신러닝에서 가장 근본적이면서 중요한 분석 방법은 상관관계를 분석하는 것이다 상관관계를 살펴보기 위해서는 상관계수를 구하는 방법이 있다 상관계수는 -1 부터 +1까지의 범위로 eumgill98.tistory.com 이때 갑자기 의문점이 하나 생겼다 과연 직접 구현함 함수와 라이브러리에 있는 함수의 속도 차이가 존재할까? 오늘은 이런 의문점을 해결하기 위해서 간단한 실험을 진행해 보았다 실험 설계 오늘 비교할 공식 재료 : `피어슨 상관계수` 비교할 대상 (1) 직접 구현한 피어슨 상관계수 함수 (2) Numpy의 np.corrco..
- 2023-11-16 19:01:04
- [궁금한건 못참아] 다양한 이미지 포맷.. 보이지 않는 너머에 대해Cat_Code대학시절 미디어 커뮤니케이션학을 전공하면서 카메라의 발명은 예술작품의 `아우라`의 소멸을 만들어 냈다는 내용을 공부한 적이있다. 카메라만 있으면 누구나 원하는 자신의 얼굴 또는 지인의 얼굴 그리고 배경사진까지 하나의 예술작품으로 간직할 수 있는 시대가 만들어 진것이다. 최근 디지털로 넘어오면서 이러한 `아우라`는 완전히 사라진 것 처럼 보인다 물론 NFT 같이 디지털에서 `아우라`를 소생시키려는 시도들은 있지만 이제 누구나 원한다면 인터넷 상에서 자신이 원하는 예술작품, 사진, 그림 등을 Ctrl + C 와 Ctrl + V 만으로 소유할 수 있는 시대가 되었다. 그러나 우리는 이러한 행위에서 무심결에 넘어가는 부분이 있다. 바로 이미지 파일 포맷이다 `JPG, PNG, ...` 등 다양한 방식의 이미지 ..
- 2023-11-15 19:44:04
- [Einops] 차원관리의 새로운 차원Cat_CodeDeeplearning code를 작성하다 보면 항상 tensor의 차원을 관리하는 것에서 어려움을 마주친다. 물론 Pytorch나 Numpy를 활용해서 차원을 관리할 수 있지만 문제는 `직관적`이지 않다는 것이다. 실제로 4차원 이상부터는 사람이 상상하기 힘들다.. 이렇게 어려운 차원관리를 효율적으로 할 수 있는 라이브러리가 있다. 바로 `Einops`이다. 이 라이브러리를 처음 발견한 코드는 ViT를 Pytorch로 구현한 코드였다 처음 이 코드를 보았을때, 기존 Python의 문법에서 본적이 없는 하이퍼 파라미터의 형태를 갖고 있어서 조금은 혼란스러웠다. out = torch.matmul(attn, v) out = rearrange(out, 'b h n d -> b n (h d)') return s..
- 2023-10-17 23:21:33
- GILCat_Code요즘 프로그램을 코딩하면서 가장 먼저 우선시하려고 노력하는 부분이 내가 작성한 프로그램의 처리속도가 과연 효율적인지? 또는 더 빠른 방법으로 처리할 수는 없는지 이다. 이러한 고민을 하다보면 Multi - Processing or Multi-threading을 마주 칠수 밖에 없고 CS 지식이 부족하면 조금 이해하기 어렵기 때문에 추가적인 공부를 하고 있다 공부를 하다보면 파이썬은 GIL이 있다라는 말을 자주 마주치게 되었다 따라서 이번 시간에는 이러한 GIL에 대해서 정리하고 다양한 정리를 해보려고 한다 1. 그래서 GIL이 뭔데? 우선 GIL을 이해하기전에 Python의 인터프리터를 이해 해야한다. Python의 인터프리터란, 인터프리터 언어를 생각하면 쉽게 이해할 수 있는데 내가 작성한 파이썬 코드..
- 2023-07-25 02:04:17
- CloudCat_Code목차 1. 우리는 왜 Cloud 시스템을 사용하는가? 2. Cloud 시스템의 종류와 제품들 3. Google Cloud 서비스 실습 1. 우리는 왜 Cloud 시스템을 사용하는가? 최근 Cloud 서비스가 범람하고 있다 간단한 예시로는 구글 Cloud 서비스나 AWS의 서비스등이 있다 대부분 서비스를 프로덕트하는 회사에서는 클라우드 시스템을 적극적으로 활용한다 왜 일까? 간단하게 말하자면 서비스 프로덕 과정에서 개발 및 배포에 필요한 설비 비용을 절감할 수 있고, 트랙픽에 따라서 유동성 있게 설비를 활용할 수 있기 때문이다 예를 들어서 우리가 인공지능 서비스를 하나 만들었다고 가정해보자 이제 이 놀라운 서비스를 사용자들에게 배포할 시기가 왔다 어떻게 배포해야할까? 가장 간단하게 생각할 수 있는 접근법은..
- 2023-07-03 12:57:01
- [CS & Python] Python 동시성에 대한 Reference 정리Cat_Code파이썬과 동시성 프로그래밍 파이썬의 동시성 프로그래밍과 관련하여 삽질한 내용을 바탕으로 블로그 포스팅을 작성해보았다. sgc109.github.io 파이썬 동시성 프로그래밍 개념정리 파이썬 동기/비동기, 동시성/병렬성 프로그래밍 개념 정리 velog.io
- 2023-06-24 19:35:55
- [파이썬 - 알쓸신잡] 왜 Dict는 List 보다 빠를까?Cat_Code항상 코테 문제를 풀거나 시스템을 구성할때 고려되어야할 중요한 포인트가 있다 바로 `시간 복잡도`이다 가끔 쉬워보이는 문제도 시간복잡도와 마주치게 되면 꽤 어려워진다 오늘은 이런 시간복잡도에 대한 이야기를 나눠보려고 한다 속도의 한계를 보여주지! 그렇다면 시간 복잡도가 가장빠른 경우는 어떠한 상황일까 당연히 O(1)인 상황이다 모든 결과가 한번에 처리되고 출력되는 속도이다 우리가 처리해야하는 데이터의 길이가 n이는 n+1이든 m이든 상관없이 O(1)이면 매우 빠르다 아직 이해가 되지 않을 수 있다 예시를 들어서 이해해보자 대표적으로 우리가 n개의 배열을 하나씩 print 하게 되면 얼마의 시간 복잡도가 걸릴까? 당연히 O(1)이면 매우 최적이겠지만 O(n) 만큼의 시간 복잡도가 소요된다 즉, 하나를 출력..
- 2023-06-12 18:18:58
- [CS]CPU bound vs. I/O boundCat_Code
- 2023-06-08 21:48:49
- [Python] Typing 2편Cat_Code참고한 자료 파이썬 Typing 파헤치기 - 심화편 지난 글 '파이썬 Typing 파헤치기 - 기초편'에서는 Typing의 기본적인 내용과 8개의 타입에 대해 다루어봤습니다. 이번 포스트에서는 조금 더 심화된 타입들에 대해 다뤄보도록 하겠습니다. 심화 타 sjquant.tistory.com 지난 글 [Python] Typing 1편 참고자료 파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사 파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 eumgill98.tistory.com 우리는 지난 시간에 Python의 Typing기능의 간단한 기초를 알아보았다 이번 시간에는 조금더 심화 과정의 Typing을 알아볼려고 한다 ..
- 2023-05-31 16:29:21
- [Python] Typing 1편Cat_Code참고자료 파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사 파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 바뀌어도 됩니다. 파이썬과 같은 동적 언 sjquant.tistory.com 요즘 오픈 소스를 살펴보면서 공부하는 습관을 기르고 있다 오픈 소스를 살펴보면 Typing을 hint로 주는 경우가 있는 이부분은 처음 보고 어색한 부분이었기 때문에 추가적을 공부를 하였다 그럼 이제부터 공부한 내용을 기반으로 Python 의 Typing에 대해서 정리해보겠다 1. 동적언어의 Typing? Python은 많은 사람들이 알고 있들이 동적언어이다. 동적언어의 가장큰 장점은 굳이 변수의 타입을 일일이 명시할 필요가 없다는 것..
- 2023-05-30 23:37:26
- [Python] Iterator vs. GeneratorCat_Code파이토치를 하다보면 특히, DataLoader 다루다보면 Generator 라는 것을 만나게 된다 처음 마주치면 어떠한 개념인지 살짝 애매할 수 있기 때문에 이번에 개념을 한번 글로 정리해보려고 한다 Iterator vs. Generator Iterator 먼저 Iterator를 알아보자 iterate는 반복하다라는 의미이다 파이썬의 경우 list, dict, 문자열이 iterable 객체이다. 이를 이해하기 쉽게 예를 들어서 설명하면 x = [1 , 2, 3] list인 경우 순차적으로 값을 뽑기 위해서 for문을 활용할 것이다 fro i in [1,2,3]: print(i) >>> 1 2 3 그렇다면 for문을 활용하지 않고 각 값을 순차적으로 뽑을 수 있는 방법은 없을까? 바로 iter()를 활용하..
- 2023-03-14 22:16:13
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)