본문 바로가기

분류 전체보기59

numpy 배열의 생성과 조작 dnumpy 사용을 위하여 import를 해준다. import numpy as np numpy 배열 생성 np.array np.array 에 list를 넘겨주어 numpy 배열의 생성이 가능하다. np.array([1,3,5,7,9]) array([1, 3, 5, 7, 9]) np.ndarray ndarray에 원하는 shape로 생성이 가능하다. np.ndarray((3,4)) array([[6.95174279e-310, 7.89754161e-312, 7.89754160e-312, 4.94065646e-324], [8.32219288e-315, 0.00000000e+000, 0.00000000e+000, 7.41098469e-323], [4.00752607e+175, 6.89912841e-310, 0... 2021. 6. 22.
Python pathlib.Path로 경로관리하기 얼마전 노트북을 새로 구매하였다. 이전 노트북은 debian 운영체제를 사용하고 있었다. 그래서 개인적으로 간단하게 만드는 파이썬 프로그램들에는 별 생각 없이 슬래시(/)가 포함된 경로를 그대로 넣었었다. 이 프로그램들은 경로를 구분하는 데에 역슬래시를 사용하는 윈도우 프로그램에선 정상적으로 작동하지 않는다. os.path.join을 사용해서 처리하려다가 경로를 문자열이 아닌 객체로 처리하는 pathlib.Path에 대해 알게되었다. Path를 이용해서 경로를 처리하는 법 import from pathlib import Path Path 객체 생성 p = Path('.') p2 = Path('.','folder2') 시스템에 따라서 PosixPath, WindowsPath중 하나로 생성이 된다. 경로 연.. 2021. 6. 10.
Pytorch의 Reproducibility를 위한 설정들 같은 학습 데이터로 학습을 하고, 동일한 테스트 데이터로 테스트를 하였음에도 매번 실행해보면 모델의 학습 파라미터와 테스트 결과가 동일하지 않은 경우가 많다. 이는, 높은 수준의 재생산성(Reproducibility)을 요구하는 대회나 업무에 지장을 줄 수 있다. 이 글에선 Pytorch를 사용할 때 최대한 Reproducibility를 유지할 수 있는 방법에 대해 적어보았다. Seed 고정 난수 생성기의 seed를 고정하면, 매번 프로그램을 실행할 때마다 생성되는 난수들의 수열이 같게 할 수 있다. 그래서 pytorch와 관련 라이브러리에서 사용되는 난수 관련 seed를 고정하여야 한다. pytorch_lightning에선 pytorch와 관련된 난수 생성기의 seed를 고정하는 코드가 있다. 그 코드.. 2021. 6. 9.
구글 애드센스 승인 후기 코딩하면서 기억이 잘 안 날 때 다시 보면 유용할 것 같은 것들과 내가 했던 몇 가지 뻘짓들을 적는 블로그여서 포스팅 주기도 길지 않았고, 내용이 많은 블로그도 아니었다. 그래도 되면 좋고 안되면 말고 하는 생각으로 애드센스 승인 신청을 넣었었다. 그리고 신청 3일 후 메일 한통이 날아왔다. 블로그에 광고를 게재할 수 있게 되었다. 신청 당시에 글이 많은 것도 아니었다. 그렇다고 포스팅 당 글자 수가 많은 것도 아니었다. 그럼에도 너무 쉽게 통과가 되어서 당황스러웠다. 같은 주제로 글을 올렸던 것이 도움이 되었던 것일까? 무엇이 애드센스를 승인하는 알고리즘의 마음을 사로잡았는지는 모르겠지만, 통과가 되어 기분이 나쁘진 않았다. 하지만, 난 이 블로그에서 수익이 많을 것이라 생각하지 않는다. 앞에서 말했듯.. 2021. 6. 9.
Python multiprocessing.Pool 멀티프로세싱 2 Python에선 multiprocessing.Pool을 이용하여 멀티프로세싱을 할 수 있다. Process를 활용할 때는 우리가 직접 Process를 만들어서 그 Process위에서 작업을 돌렸다면, Pool은 지정된 개수만큼 프로세스를 미리 만들어 놓고, 그 프로세스들 위에서 작업을 돌리는 방식이다. Pool 사용하기 from multiprocessing import Pool if __name__ == '__main__': p = Pool(4) # do something here with Pool # blabla # blablabla p.close() # or p.terminate() p.join() 생성 처음 Pool을 생성할 때에 사용될 프로세스 수를 지정할 수 있다. 만약, 주어지지 않는다면 os.. 2021. 6. 7.
Python multiprocessing.Process 멀티프로세싱 1 파이썬에서 멀티프로세싱을 이용하여 여러 작업을 동시에 처리할 수 있다. multiprocessing의 Process를 사용하여 이를 간단히 구현할 수 있다. Process 사용 아래 코드는 Process를 사용하는 가장 간단한 방법이다. from multiprocessing import Process def func(string): print(string) if __name__ == "__main__": proc = Process(target=func,args=('process',)) proc.start() process Process의 서브클래스를 만들어 사용할 수도 있다. 이때, 반드시 run() 메서드를 오버 라이딩해주자. from multiprocessing import Process class .. 2021. 6. 3.
Python collections의 Counter로 개수 세기 Python의 리스트나 튜플 혹은 이외의 iterable 한 객체에서 안에 요소가 몇 개가 들어있는지 셈을 하고 싶을 때가 있다. 구현이 오래 걸리는 작업은 아니지만, 구현하기 귀찮거나 시간이 없을 때 collections의 Counter를 사용해주면 좋다. 이 글은 Counter를 사용하는 방법에 대한 내용을 담고 있다. Counter import Counter를 사용해주기 위해 먼저 import를 하자. from collections import Counter 기본적인 Counter의 생성 및 사용 생성자에 아무 값도 넣어주지 않으면 빈 Counter가 생성된다. cnt = Counter() print(cnt) Counter() Counter를 사용하여 iterable 한 객체가 담고 있는 것들을 세.. 2021. 5. 27.
python에서 json 다루기 파이썬에서 json을 다루어 보자. 모듈을 사용하지 않는 방법도 있지만, 편하게 하기 위해 json모듈을 import 하여 사용하자. import json json모듈은 json형식의 문자열들을 파이썬 객체로 바꾸어주고, 그 반대로도 바꾸어준다. 그래서 어떤 파이썬 객체가 어떤 json의 어디에 해당하는지 파악하면 좀 더 편하게 다룰 수 있다. 아래는 그 표이다. Python Json None null dict Object list Array tuple Array int Number float Number str String True true False false 사실 이렇게 써놓아도 크게 외울 것은 없다. 숫자는 숫자고, 문자열은 문자열, True, False는 맨 앞 대문자만 다르다. json에서 p.. 2021. 5. 24.
That's life - Frank Sinatra 1962년 Marion Montgomery가 불렀던 곡이 원곡이지만, 우리에게 이곡은 Frank Sinatra의 목소리가 더 익숙하다. 영화 조커의 마지막 장면에서 Frank Sinatra의 이 노래가 흘러나온다. 아래는 이 노래의 가사다. (부정확한 번역이 다수 포함되어 있습니다.) That's life (That's life) 그게 인생이야. That's what all the people say 그게 모든 사람들이 말하는 거야. You're riding high in April, 4월에는 잘 나가다가도 shot down in May 5월이면 내려다 꽂는 But I know I'm gonna change that tune When I'm back on top, back on top in June 그러.. 2021. 5. 20.
python의 with 구문 (context manager) 한번 보기 대부분의 경우 파이썬을 배우면서 with를 처음 접하는 때는 파일을 다룰 때이다. 어떤 파일을 다루고 나서는 close를 해주어야 프로그램이 정상 동작한다. 그러나 파일을 다루던 도중에 오류로 인해 예상치 않게 프로그램이 종료가 된 경우 close를 미처 해주지 못한 경우도 발생한다. try - finally 구문을 이용하면 실행 도중 오류가 발생하였을 때 close를 해 줄 수 있다. 그러나 with를 사용하면 우리가 직접 close를 해 줄 필요가 없다. 컨텍스트 매니저를 통해 자원의 할당과 반납을 필요할 때 해주기 때문이다. try finally vs with # Handling file with try - finally f = open('a.txt','w') try: f.write('hello w.. 2021. 5. 19.