문제

현재 신경망 라이브러리를 구축하고 있습니다. 단순성을위한 객체 그래프로 구성했습니다. 다른 사람이 배열 기반 접근 방식으로 이동하는 성능 이점을 정량화 할 수 있는지 궁금합니다. 내가 지금 가지고있는 것은 임의의 복잡성에 가까운 네트워크를 구축하는 데 매우 좋습니다. 재발 된 네트워크뿐만 아니라 정기적 인 (역전 된) 네트워크가 지원됩니다. 훈련 된 네트워크를 배열과 같은 "간단한"형태로 "컴파일"하는 것을 고려하고 있습니다.

나는 그곳에있는 누군가가 생산에 잘 배치 된 신경망을 구축하는 실용적인 조언이나 경험이 있는지 알고 싶었습니다. 최종 제품을 객체 그래프 기반 대신 배열 기반으로하는 데 도움이되는 방법이 있습니까?

PS 메모리 발자국은 속도보다 덜 중요합니다.

도움이 되었습니까?

해결책

이것은 당신이 사용하는 언어에 달려 있습니다 - 나는 당신이 c 파생물을 사용하고 있다고 가정합니다.

내 구현에서 객체 그래프 접근법이 훨씬 우수하다는 것을 알았습니다. 속도가 약간 상충되지만 유지 보수의 용이성은 객체 조회 호출보다 중요합니다. 이것은 모두 훈련 속도를 찾고 있는지 또는 해결 속도를 해결하는지에 달려 있습니다 ... 훈련 속도에 대해 가장 걱정하고 있다고 가정하고 있습니까?

필요한 경우 언제든지 객체 호출 문제 중 일부를 마이크로 최적화 할 수 있습니다.

네트워크를 서브 네트팅하려는 2 차 동기를 고려할 때 객체 기반이되는 것이 훨씬 더 중요하다고 생각합니다. 작업의 일부를 쉽게 제거 할 수 있습니다.

다른 팁

사람들은 AI에서 GPGPU 기술을 사용하기 시작했으며, 신경 그물을 매트릭스 형태로 사용하면 일반적인 그래픽 카드에서 훨씬 빠른 매트릭스 OP를 활용할 수 있습니다.

그러나 당신은 그것을 구현하고, 당신은 결코 잊지 말아야합니다.

Just make sure you don’t have it maximize instead of minimize.

http://xkcd.com/534/

오랜 시간이 지났지 만, 속도는 일반적으로 신경망을 훈련하는 동안 문제 일 뿐이라는 것을 기억합니다.

나는 그러한 도서관을 쓰는 개인적인 경험이 없지만, 당신이 배울 수있는 인기있는 오픈 소스 프로젝트에 당신을 연결할 수 있습니다. (개인적으로 나는이 기존 라이브러리 중 하나를 사용할 것입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top