최근에 클래스 다이어그램을 그릴 일이 있었는데 draw.io로 그리려고 했는데 여간 귀찮은 게 아닌게 다른 방법은 없나 찾아보니 python 라이브러리인 pyreverse로 뚝딱 만들 수 있다는 걸 알게 됐다.draw.io를 사용해서 class diagram을 그리면 위와 같이 그릴 수 있다. 하지만 이번에는 pyreverse, pylint를 사용하여 정말 간단하게 그릴 수 있었다.1. pyreverse, pylint 설치pip install pyreversepip install pylintpylint를 설치하면 pyreverse도 같이 설치된다. 2. pyreverse 실행pyreverse -o png ./pyreverse -o [확장자명] [경로]경로에는 diagram을 그릴 폴더의 __init__..
YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information, Chien-Yao Wang, et al., 2024 을 읽고 요약, 정리한 글입니다. github : https://github.com/WongKinYiu/yolov9 ◼️ Contribution- 현존하는 심층 신경망 구조를 reversible fuction의 과점에서 이론적으로 분석하고 이러한 프로세스를 통해 이전에는 설명하기 어려웠던 많은 현상들에 대해 설명함.- 이러한 분석을 기반으로 PGI와 auxiliary reversible branch를 설계하고 좋은 결과를 얻음.- PGI는 deep supervision이 아주 깊은 신경망 구조에서만 사용할 수 ..
우분투 터미널에서 exec -it로 접속한 도커 컨테이너에서는 pip 명령어가 제대로 작동하는데 vscode에서 attach한 도커 컨테이너에서는 pip 명령어가 동작하지 않고 bash: pip3: command not found이런 에러가 발생할 때가 있다. vscode에서 바라보는 PATH와 터미널에서 접속한 컨테이너의 PATH가 일치하지 않기 때문에 일어나는 문제이다.echo $PATHvscode에서 위 명령어를 이용해 PATH를 출력하면 다음과 같이 나올 것이다.root/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sb..
Yolo 모델에 대해서 톺아볼 일이 있었는데 간단 요약 글을 포스팅 하면서 다시 한번 정리를 한번 해 보려고 한다. 객체 감지는 이미지나 비디오 내의 객체를 식별하고 위치를 찾는 computer vision task이다.객체 감지 알고리즘은 single shot detection과 two shot detection으로 나눌 수 있다. two shot detection 알고리즘은 객체를 감지하는데 두 단계 프로세스를 사용한다. 첫번째 단계에서는 잠재적으로 객체를 포함할 수 있는 bounding box를 제안을 한다. 두번째 단계에서는 box 내 객체 클래스를 분류하기 위해 제안된 영역을 합성 신경망을 통해 실행을 한다.two shot detection 알고리즘의 대표적인 예료는 R-CNN, Fast R-C..
2년 전, 이직을 하게 돼서 급하게 이사를 해야 했던 상황에서 정말 많이 알아보고 발품 팔아서 중기청으로 1억을 전세 대출을 받고 이사를 한 게 엊그제 같은데 벌써 2년이 지나서 연장을 했다. 중기청 전세 대출 후기 👉 https://iambeginnerdeveloper.tistory.com/194 중소기업 청년 전세 대출 100% 실제 후기 | 중기청 대출 순서 및 꿀팁, 사후자산심사 완료최근에 다른 지역으로 이사를 하게 되었고 오랫동안 월세 생활을 하다가 이번에 큰 맘 먹고 전세로 바꾸고자 정말 급하게 중기청 대출을 진행했다. 나는 퇴사일과 이사, 이직 날짜가 맞물리지iambeginnerdeveloper.tistory.com 1. 재계약 의사 밝히기(대출 만기 2개월 전)8월 중순이 계약 종료 및..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️8.1 어텐션의 구조seq2seq를 한층 더 강력하게 하는 어텐션 메커니즘 아이디어를 소개한다.이 어텐션이라는 메커니즘 덕분에 seq2seq는 필요한 정보에만 주목할 수 있게 된다. ◾ 8.1.1 seq2seq의 문제점seq2seq에서는 Encoder가 시계열 데이터를 인코딩한다. 인코딩된 정보를 Decoder로 전달하고 Encoder의 출력은 고정 길이의 벡터였다.고정 길이 벡터라 함은 입력 문장의 길이에 관계없이 항상 같은 길이의 벡터로 변환한다는 뜻이다.현재의 Encoder는 아무리 긴 문장이라도 고정 길이의 벡터로 변환하지만 이는 필요한 정보가 벡터에 다 담기지 못하..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 7.1 언어 모델을 사용한 문장 생성◾ 7.1.1 RNN을 사용한 문장 생성의 순서앞 장에서의 LSTM 계층을 이용한 언어 모델은 아래 그림처럼 생겼다. 언어 모델은 다음과 같은 확률분포를 출력한다.언어 모델은 지금까지 주어진 단어들에서 다음에 출현하는 단어의 확률분포를 출력한다. 이 결과를 기초로 다음 생성하기 위해서는 확률이 가장 높은 단어를 선택하는 방법을 떠올릴 수 있다.확률이 가장 높은 단어를 선택할 뿐이므로 결과가 일정하게 정해지는 결정적인 방법이다. 또 확률적으로 선택하는 방법도 있다. 각 후보 단어의 확률에 맞게 선택하는 것으로 확률이 높은 단어는 선택되기 쉽..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. 요즘에는 앞 장의 단순한 RNN 대신 LSTM이나 GRU라는 계층이 주로 쓰인다. RNN이라고 하면 앞 장의 RNN이 아니라 LSTM을 가리키는 경우도 흔하다.LSTM이나 GRU에는 게이트라는 구조가 더해져 있는데 이 게이트 덕분에 시계열 데이터의 장기 의존 관계를 학습할 수 있다. ◼️ 6.1 RNN의 문제점RNN은 시계열 데이터의 장기 의존 관계를 학습하기 어렵다. BPTT에서 기울기 소실 혹은 기울기 폭발이 일어나기 때문이다. ◾ 6.1.1 RNN 복습RNN 계층은 시계열 데이터인 xt를 입력하면 ht를 출력한다. 이 ht는 RNN 계층의 은닉 상태라고 하여 과거 정보를 저장..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 5.1 확률과 언어 모델◾ 5.1.1 word2vec을 확률 관점에서 바라보다지금까지 살펴본 신경망은 피드포워드라는 유형의 신경망이다. 피드포워드란 흐름이 단방향인 신경망을 말한다.입력 신호가 다음 층(중간층)으로 전달되고 그 신호를 받은 층은 그다음 층으로 전달하고 다시 다음 층으로.. 식으로 한 방향으로만 신호가 전달된다.시계열 데이터를 잘 다루지 못하는게 단점이기에 순환 신경망(RNN)이 등장하게 된다. CBOW 모델이 출력할 확률식은 다음과 같이 된다.위 식을 교차 엔트로피 오차에 의해 유도한 결과는 다음처럼 쓸 수 있다.CBOW 모델의 학습으로 수행하는 일은 위의 손..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 4.1 word2vec 개선 1위 그림과 같이 CBOW 모델은 단어 2개를 맥락으로 사용해 이를 바탕으로 하나의 단어를 추측한다. 이때 입력 측 가중치와의 행렬 곱으로 은닉층이 계산되고 다시 출력 측 가중치와의 행렬 곱으로 각 단어의 점수를 구한다.이 점수에 소프트맥스 함수를 적용해 각 단어의 출현 확률을 얻고 이 확률을 정답 레이블과 비교하여 손실을 구한다. 위 그림에서 보듯 입력층과 출력층에는 각 100만 개의 뉴런이 존재한다. 이 수많은 뉴런 때문에 중간 계산에 많은 시간이 소요되며 다음 두 계산이 병목이 된다.- 입력층의 원핫 표현과 가중치 행렬 Win의 곱 계산.- ..