전체 글

전체 글

    [Python] 타이핑 / 타입 힌트 (typing / type hint)

    [Python] 타이핑 / 타입 힌트 (typing / type hint)

    Introduction 파이썬은 기본적으로 동적 타입 언어 (dynamically typed language) 이다. 이 말은 결국 어떤 변수에 값을 대입할 때, 타입을 선언해 줄 필요가 없다는 말이다 (프로그램 실행 중에 타입이 결정됨). 이런 특성은 C++이나 Java 등 변수를 선언할 때 부터 타입을 strict 하게 지정해 줘야 하는 정적 타입 언어들과 비교된다. 컴파일 이후에 유연하게 타입이 결정된다는 특성 덕분에 파이썬은 빠른 개발이 가능하며 언어 자체의 진입 장벽이 낮다는 장점이 있지만, 타입 안전성이 컴파일 단계에서 보장되지 않아 실행 중 예상치 못한 TypeError와 마주할 수 있다는 단점도 있다. Type hint 이런 문제에 대응하기 위해 Python 3.5 버전 이후부터 기본 모듈..

    [Review] Patch SVDD (2부: Method & experiment)

    [Review] Patch SVDD (2부: Method & experiment)

    이전 포스트: Patch SVDD Review 1부 paper link: arxiv.org/pdf/2006.16067.pdf github (PyTorch): github.com/nuclearboy95/Anomaly-Detection-PatchSVDD-PyTorch 지난 번 포스트에 이어서 리뷰를 작성한다. 1부에서는 논문에서 풀고자 했던 문제인 (image) anomaly detection과 anomaly segmentation, 그리고 성능 지표인 AUROC에 대해서 간략히 알아봤다. 이번에는 논문에서 제시된 새로운 anomaly detection 방법론과 그 결과에 대해 정리할 예정이다. (In-line LaTeX 구문을 써 봤는데 모바일 버전에선 제대로 보여지지 않는 것 같다! 방법을 찾으면 추후 ..

    [Python] 언패킹 (Unpacking)

    [Python] 언패킹 (Unpacking)

    Introduction 파이썬 언어에는 몇 가지 특징적인 기능들이 존재하는데, 그 중 하나가 바로 언패킹(Unpacking) 구문이다. 오늘은 이 언패킹에 대해 간단하게 정리해 보려 한다. Iterable Unpacking 파이썬 문법 하에서는, 대입식의 좌측 항에 튜플 혹은 리스트를 가져다 놓는 것이 가능하다. 아래의 예제를 보자. (var_a, var_b) = (5, 7) print(f"Variable A: {var_a}") print(f"Variable B: {var_b}") 대입식의 좌측과 우측이 모두 튜플로 이루어져 있고, 좌측 튜플의 변수들은 우측 튜플로부터 상대적인 위치를 고려해 값을 대입 받고 있다. 코드는 정상적으로 돌아가 5와 7을 출력한다. 물론 좌측 항이 리스트로 이루어진 경우에도 ..

    안녕하세요

    안녕하세요

    AI와 관련된 일을 하다 보면 구글에 뭔가를 검색해 볼 일이 참 많다. 그러다 보면 잡다한 코딩 테크닉부터 라이브러리 사용법이나 최신 알고리즘 리뷰까지 정말 다양한 블로그 글을 접하게 된다. 학계나 현업자 분들이 꾸준히 정리해 놓은 자료로부터 적지 않은 도움을 받다 보면서, 나도 대학원 과정과 실무 (비록 짧지만) 를 통해 얻은 직관과 잡다한 노하우들을 정리해 공유해 보고 싶다는 생각이 들었다. 이렇게 막연하게 테크 블로그를 시작해 보고 싶다는 마음만 갖고 있다가, 어느 날 이유없는 뽐뿌로 인해 블로그를 개설해 버리는 식으로 첫 스타트를 끊었고, 생각나는 내용들부터 하나하나 올려보기 시작했다. 처음이다 보니 아직 블로그의 방향성이 완벽히 fix 된것은 아니지만 대략적인 계획은.. 일을 하면서 얻은 잡다한..

    [Review] Patch SVDD (1부: Anomaly detection 개요)

    [Review] Patch SVDD (1부: Anomaly detection 개요)

    최근에 anomaly detection에 관련된 페이퍼들을 읽을 일이 많이 있었는데, 개인적으로도 하나씩 다시 정리해볼 겸 논문 리뷰 글을 주기적으로 올릴 생각이다. paper link: arxiv.org/pdf/2006.16067.pdf github (PyTorch): github.com/nuclearboy95/Anomaly-Detection-PatchSVDD-PyTorch 이번 논문은 Patch SVDD로, 새로운 image anomaly detection method를 제시한다. 자세한 내용을 설명하기 이전에, 여기서 다루고자 하는 문제인 image anomaly detection이 무엇인지에 대해 먼저 짚고 넘어가자. (편의를 위해 각종 definition과 notation은 논문의 내용을 빌린다..

    [Python] PEP 8: E722 do not use bare 'except'

    [Python] PEP 8: E722 do not use bare 'except'

    Introduction 파이썬에는 PEP 8 (Python Enhancement Proposal #8) 이라는 스타일 가이드가 있다. PEP 8 은 파이썬 코드를 깔끔하고 읽기 좋게 작성하기 위한 일련의 규칙들로, pycodestyle 과 같은 코드 스타일 분석 도구를 사용하면 쉽게 PEP 8 가이드를 따르고 있는 지 확인할 수 있다. (이런 툴들은 보통 vscode 같은 IDE에도 내장시켜 사용할 수 있다) 본인도 최근에서야 PEP 8 스타일 가이드 툴을 적용해 봤는데, 한 가지 이유가 궁금해지는 스타일 suggestion이 있었다. E722 do not use bare 'except' 이 제안은 보통 다음과 같은 방식으로 예외를 처리할 때 발생한다. try: ... # 오류 발생을 catch 하고 싶..

    [Python] 여러 list를 한 번에 iterate 하고 싶을 때

    [Python] 여러 list를 한 번에 iterate 하고 싶을 때

    Introduction 파이썬을 사용하다 보면, 여러 개의 리스트에서 동시에 값을 iterate 해야 할 때가 많다. 예를 들어, 아래와 같이 과일의 이름을 저장하고 있는 fruit_list와 과일의 가격을 저장한 fruit_price_list가 각각 리스트로 주어졌을 때, 과일의 이름과 가격을 하나씩 묶어 출력하고 싶다고 해 보자. (두 리스트의 길이는 동일하다고 가정하자) fruit_name_list = ['apple', 'banana', 'grape', 'durian', 'orange'] fruit_price_list = [5, 10, 20, 100, 8] 1. Naive indexing (worst solution) C++에서 막 Python으로 넘어왔다면, 아래와 같은 인덱싱 방식으로 두 리스트..