목록전체 글 (71)
영넌 개발로그
변수 이름 지정 class Variable: def __init__(self,data, name=None): if data is not None: if not isinstance(data, np.ndarray): raise TypeError("{}은 지원하지 않습니다.".format(type(data))) self.data = data self.grad = None self.creator = None self.generation = 0 self.name = name ndarray 인스턴스 변수 Variable을 ndarray 처럼 보이도록 만들기 class Variable: ... @property def shape(self): return self.data.shape @property def ndim(..
파이썬은 필요 없어진 객체를 메모리에서 자동으로 삭제함 -> 메모리 관리 의식x 파이썬이 메모리 관리 하는 방법 1. 참조 카운트 모든 객체는 참조 카운트가 0인 상태로 생성됨 다른 객체가 참조할 때마다 1씩 증가 대입 연산자를 사용할 때 함수에 인수로 전달할 때 컨테이너 타입 객체(리스트, 튜플, 클래스)에 추가할 때 객체에 대한 참조가 끊길 때마다 1만큼 감소 카운트가 0이 되면 파이썬 인터프리터가 회수 class obj: pass def f(x): print(x) a = obj() #변수에 대입: 카운트 1 f(a) #함수에 전달: 함수 안에서 카운트 2 #함수 완료: 카운트 1 a= None #대입 해제: 카운트 0 a = obj() b = obj() c = obj() a.b = b #a가 b를 ..
올바른 역전파의 경우 D,B,C,A 나 D,C,B,A 순서로 역전파가 일어나야 함 현재 구현한 코드는 위의 그래프의 역전파를 올바르게 해내지 못함 처리할 함수의 후보를 funcs 리스트의 끝에 추가하고 다음에 처리할 함수를 그 리스트에서 '마지막' 원소를 꺼내고 있음 처리 순서가 D,C,A,B,A 로 C다음 A가 바로 이어지며 A의 역전파가 두 번 일어나게 된다. 문제 해결을 위해 '우선순위'가 필요 1. 계산 그래프를 분석하여 위상 정렬 알고리즘 사용 (Topological Sort) 노드의 연결 방법을 기초로 노드 정렬 가능 2. 순전파 때 어떤 함수가 어떤 변수를 만들어내는지 알 수 있음 세대 기록 가능 class Variable: def __init__(self,data): if data is n..