2014-06-06 2 views
1

테스트 세트에서 관찰 된 변수는 각 데이터 포인트에 대해 동일하지 않습니다. 주어진 변수는 데이터 포인트에서 관찰 될 수 있으며 다음 변수에서는 관찰 될 수 없습니다. 따라서 전체 PyMC 모델을 재구성하지 않고 해당 변수의 관찰 된 플래그를 변경하고 싶습니다. 나는 그것이 불가능하다는 것을 읽고 그것을 할 수 없었다. 그것을 할 방법이 있습니까?PyMC : 확률 변수 관찰 플래그 전환

따라서 필자는 각 테스트 세트 데이터 포인트에 대해 PyMC 모델을 재구성하기로 결정했습니다. for 루프를 반복 할 때마다 새로운 PyMC 모델을 인스턴스화합니다.

각 PyMC 모델에서 사용하는 메모리가 삭제되지 않는 것 같습니다. 사실은 내 네트워크가 거대하고 (1000 개의 이항/시그마이 드 노드) 조밀하게 연결되어 있다는 것입니다. 모델은 약 200MB (흔적이없는 모델)입니다. 파이썬 가비지 컬렉터가 내 네트워크의 PyMC 노드 사이에 수많은 순환 참조 때문에이를 삭제할 수 없는지 궁금합니다.

당신은 어떻게 생각하십니까? 그런 일을하는 적절한 방법이 보이십니까?

답변

1

각 데이터 포인트에 대한 PyMC 모델을 재구성하는 경우 내장 샘플러 (예 : MCMC)를 사용하지 않는 것으로 추정됩니다. 이 경우 각 반복마다 설정할 노드의 set_value() 메서드를 사용하고 model.draw_from_prior()을 호출하면 다른 노드에 무작위 값을 그릴 수 있습니다.

즉, observed=True을 사용하는 대신 observed=False을 사용하여 노드를 만들고 set_value()으로 값을 수동으로 수정할 수 있습니다.