Programming
-
리스트 컴프리헨션 사용시 주의점Programming/Python 2022. 8. 18. 15:10
강화학습 코드를 작성하다가 정말 작은 실수 때문에 3시간을 날려서 기록으로 남겨둔다. 테이블 기반의 강화학습 코드를 작성할 때 주의해야할 것은 리스트의 얕은 복사와 깊은 복사 문제이다. # 얕은 복사 action_value = [0 for _ in range(5)] value_table = [action_value for _ in range(5)] value_table[0][0] = 1 print(value_table) 위와 같이 코드를 작성하면 결과가 아래와 같이 출력된다. [[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]] 왜 일까? value_table[0]의 원소들은 모두 action_value를..
-
[Ray] - Introduction to RayProgramming 2022. 8. 18. 09:49
What is a Ray? Ray는 파이썬을 위한 분산 강화학습 프레임워크입니다. 오픈소스이며 저수준 API를 통해 파이썬으로 작성된 프로그램을 쉽게 병렬처리할 수 있다. 고수준 API에서는 머신러닝을 모델을 위한 분산학습, 하이퍼파라미터 튜닝, 강화학습 알고리즘등을 제공하고 있습니다. 먼저 Ray를 설치해보겠습니다. 리눅스나 맥 환경에서 사용하는 것을 추천드립니다. (window는 베타버전) pip install -U "ray[tune, rllib, serve]" 이후, 주피터 노트북 파일을 만들어서 import하고 init 함수를 통해 ray를 실행시켜봅시다. import ray ray.init() 그러면 위와 같은 Dashboard를 띄울 수 있습니다. 현재 시스템에서 리소스를 얼마나 사용하고 있는..
-
[Python] 파이썬 Closure 및 Decorator 설명Programming/Python 2022. 8. 12. 15:56
데코레이터를 이해하려면 먼저 클로저를 알아야 합니다. 클로저를 이해하려면 파이썬에서 변수 범위가 어떻게 작동하는지 알고 있어야 합니다. 파이썬 변수 범위부터 살펴보겠습니다. 파이썬의 변수 범위 규칙 전역변수는 프로그램의 어떤 부분에서든 접근 가능한 변수입니다. 보통 함수 외부에 정의하거나 함수 내부에서 global 키워드를 통해 전역변수를 조작합니다. b = 6 # 전역변수 def my_func_local(): a = 3 # 지역변수 b = 3 print(f"local a: {a}") print(f"local b: {b}") def my_func_global(): global b # b라는 지역변수를 전역변수로 사용한다는 의미 a = 3 # 지역변수 b = 3 print(f"local a: {a}") p..
-
[Python] __all__ 의 역할Programming/Python 2022. 8. 9. 16:42
__all__ 변수의 역할 어떤 라이브러리 내의 패키지를 분석할 때 보통 __init__.py 를 살펴보게 된다. 이때, __all__ 이라는 변수에 다른 패키지에 속한 함수나 클래스의 이름들을 리스트로 만들어 할당하는 것을 볼 수 있다. 이 변수의 역할은 다른 파일에서 특정 패키지를 `from lib import *`와 같이 쓸 때, *에 들어갈 변수, 함수, 클래스들을 선언하는 것이다. +-- folder | +-- all.py | +-- points.py # ex) points.py __all__ = ['Points', 'add'] class Points: pt1 = (1, 2) pt2 = (-1, -2) def add(pt1, pt2): x = pt1[0] + pt2[0] y = pt2[1] + ..