반응형

python 25

GNU/Linux 사용자를 위한 Tistory CLI 프로그램

Tistory CLI 최근에 직접 만든 Tistory CLI 프로그램을 소개하고자 한다. GNU/Linux 사용자를 위한 이 프로그램은 내가 Tistory 웹에디터를 쓰기 싫어서 시작하게 된 프로젝트이다. 개발 관련 글을 쓰다보면 코드 뭉치를 써야 할 경우가 많이 있는데, 그 경우에 웹에디터의 WYSIWYG (What You See Is What You Get) 모드와 HTML 모드를 넘나들면서 문서 작업을 하는 것이 나에겐 고단한 일이다. 또한 웹에디터에서 제공하는 대부분의 기능을 사용하지 않을 뿐 더러, 사용하더라도 꽤나 지저분한 HTML 코드가 생성되는 것을 봤기에 더욱 꺼려지게 되었다. 이는 내가 설정한 CSS를 웹에디터가 알 길이 없으니 어쩔 수 없는 것이긴 하다만, 그렇다고 하더라도 친절한 내..

Programming 2018.08.29

왜 Python에는 GIL이 있는가

Python 사용자라면 한 번 쯤은 들어봤을 (안 들어봤다 해도 괜찮아요) 악명 높은 GIL (Global Interpreter Lock)에 대해 정리해본다. Global Interpreter Lock그래서 GIL은 무엇인가? Python Wiki에서는 이렇게 말한다. In CPython, the global interpreter lock, or GIL, is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. This lock is necessary mainly because CPython's memory management is not threa..

Programming/Python 2018.06.02

PyTorch를 이용한 NLP 튜토리얼, Part 3: Recurrent Neural Network와 LSTM 모델

Neural network를 위한 나의 첫 framework으로 PyTorch를 선택해서 알아가고 있다. PyTorch documentation의 tutorial 부분만 차근 차근 보고 있는데, 생각보다 내용이 좋다. 단순히 자기네 framework 사용법 뿐만이 아니라 deep learning의 여러 전반적인 기초에 대해서 잘 설명해주고 있다. 그 중에서 Beginner Tutorial 섹션의 "Deep Learning for NLP with Pytorch" 튜토리얼을 우리 말로 옮겨보았다. 세 번째 번역 부분은 recurrent neural network의 개념을 소개하고 NLP에서의 활용으로 LSTM 모델을 구현해본다. Exercise까지 해보려고 했으나 발버둥만 남았다. 꼭 업데이트 하리... 수..

Machine Learning 2018.04.05

PyTorch를 이용한 NLP 튜토리얼, Part 2: Word Embedding

Neural network를 위한 나의 첫 framework으로 PyTorch를 선택해서 알아가고 있다. PyTorch documentation의 tutorial 부분만 차근 차근 보고 있는데, 생각보다 내용이 좋다. 단순히 자기네 framework 사용법 뿐만이 아니라 deep learning의 여러 전반적인 기초에 대해서 잘 설명해주고 있다. 그 중에서 Beginner Tutorial 섹션의 "Deep Learning for NLP with Pytorch" 튜토리얼을 우리 말로 옮겨보았다. 두 번째 번역 부분은 NLP의 첫 발걸음으로 word embedding을 이용한 N-gram language modeling을 직접 해본다. 수식이 깨지는 등의 문제가 있는 경우 Github을 통해 볼 수도 있다...

Machine Learning 2018.03.25

PyTorch를 이용한 NLP 튜토리얼, Part 1: 기초 개념

Neural network를 위한 나의 첫 framework으로 PyTorch를 선택해서 알아가고 있다. PyTorch documentation의 tutorial 부분만 차근 차근 보고 있는데, 생각보다 내용이 좋다. 단순히 자기네 framework 사용법 뿐만이 아니라 deep learning의 여러 전반적인 기초에 대해서 잘 설명해주고 있다. 그 중에서 Beginner Tutorial 섹션의 "Deep Learning for NLP with Pytorch" 튜토리얼을 우리 말로 옮겨보았다.첫 번역 부분은 PyTorch의 기본적인 개념 및 사용법과 neural network의 이론적인 기초를 다룬다. 수식이 깨질 경우 Github을 통해 볼 수도 있다. NLP 분야에 관한 기초 지식이 없어서, 번역에 ..

Machine Learning 2018.03.22

Neural Network의 원리를 알기 위한 짧은 견문록

Neural Network은 자식새끼 알아서 크라고 냅두는 시골 엄마다 계속 핫한 숯같은 딥러닝, 그 기초 개념인 neural network을 알아보려고 한다. Neural network에 대해서 이래 저래 인터넷을 찾아봐도 잘 모르겠어서, 차근차근 ESL을 통해 neural network를 알아가는 과정을 기록했다. Engineering 입장에서가 아닌 stat/math 입장에서 저술한 책으로, 좋은 평가를 받은 책으로 알고 있기 때문에, 출처는 믿을만 하다고 본다. Supervised learning의 기본적인 개념 안에서 neural network를 설명할 수 있는 가장 기초적인 방법들부터 그 의미를 풀어나가고자 하는 것이 주 목적이다. 여기서 언급하는 각각의 방법론에 대한 설명은 각종 이론서에 굉..

Machine Learning 2018.03.18

소소한 사고, sudo rm -rf ~

사고 내용sudo rm -rf ~ 굉장히 불쾌하게 머리가 하얘지는 것을 느꼈다. 사건의 발단pipenv가 문제였다. ESL 공부용 jupyter notebook 환경을 pipenv로 관리하고 있었다. Neural network 체험을 위해 pybrain을 설치했다가, pybrain은 유지가 잘 되지 않고 있다고 하길래 다시 지우고 pytorch를 설치하려고 했다. 그런데 pipenv uninstall pybrain이 끝나는 걸 기다리고 기다리다가 20~30분이 지나도록 dependency lock 작업이 끝나지 않아서 중단했다. "괜찮아, 가상 환경 새로 날리고 다시 설치하지 뭐." 그리곤 pytorch 설치 기다리다가 또 중단. 미친 듯이 느려서 그냥 virtualenv를 쓰기로 결심하게 되었다. 오랜..

GNU-Linux 2018.03.09

Logistic Regression은 왜 Linear Method라고 불리는가?

결론부터 결론 먼저 말하자면 logistic regression이 제공하는 decision boundary가 linear하기 때문에 linear method로 분류된다. Linear regression처럼 linear equation을 풀지는 않지만, 그보다 훨씬 복잡한 계산 과정을 통했더라도 좌우지간 linear decision boundary를 제공하기 때문인 것이다. Logistic regression은 linear regression이 해주는 것보다 더욱 이치에 맞는 결과를 내 주는데, 왜냐하면 logistic regression은 확률의 성질을 linear regression보다 더 잘 지킬 수 있도록 보완된 것이기 때문이다. 본문은 이제 결론이 첫 문장에 나와서 놀랐을 수도 있겠지만, 본래 J..

Machine Learning 2018.02.25

왜 Python은 len 함수가 따로 있을까? Duck Typing과 Python Protocol

여기 Python list가 하나 있다. array = list(range(10000)) Python을 아는 사람이라면, array의 길이를 얻는 방법은 다음과 같이 간단하다는 것을 알 것이다. length_or_array = len(array) # == 10000 C++이나 Java 등의 다른 객체형 언어를 먼저 알고 있었다면 이런 의문이 들 수 있다. "array.size 또는 array.length 같이 안 하고 왜 len이라는 함수를 쓰지?" 질문에 대한 답을 하기 전에 먼저 코드 몇 뭉치를 보고 오는 게 더 좋을 것 같다. 1. len은 __len__을 호출한다. class ClassWithLen: def __init__(self, *items): self.storage = list(items)..

Programming/Python 2018.02.12

Python 계의 npm, Pipenv 첫 사용 후기

virtualenv + virtualenvwrapper를 통해 Python 가상 환경을 사용해왔었다. 사용하면서 딱히 불편한 점은 없었지만 가끔은 npm과 같이 기본적으로 고립된 환경과 비교하게 되는 때도 있었다. 일일이 가상 환경을 만든 것을 기억하고 관리하기가 조금 귀찮은 순간도 있는 것이다. 이렇게 npm, cargo 등의 여러 모듈 관리자의 좋은 점들을 모아서 더 나은 개발 환경을 제공하기 위해 Pipenv가 탄생했다고 한다. Requests 모듈의 창시자이자, flask 등의 유명한 Python 도구 개발에 참여하고, "The Hitchhiker's Guide to Python" 이라는 제목으로 책도 낸 Kenneth Reitz의 프로젝트 중 하나인 Pipenv를 눈 여겨 보고 있었다. 언젠가 ..

Programming/Python 2017.12.21