2017-02-07 5 views
1

전학을위한 개념 v1 아키텍처를 사용하고 있습니다. 제가몇 번의 반복 작업을 통해 tensorflow에서 전송 학습을 구현하면 오류가 발생하는 이유는 무엇입니까?

https://github.com/tensorflow/models/tree/master/slim

내가 3700 개 이미지가 내 화상의 각각을 추가 대한 그래프에서 마지막 풀링 층 필터를 풀링 아래 GitHub의 저장소에서 체크 포인트 파일, 그물, 전처리 파일 downloded 한 목록에. 매 반복마다 램 사용량이 증가하고 마침내 약 2000 개의 이미지가 실행됩니다. 내가 한 실수가 무엇인지 말해 줄 수 있니?

https://github.com/Prakashvanapalli/TensorFlow/blob/master/Transfer_Learning/inception_v1_finallayer.py

나는 목록 추기를 제거하고 바로 결과를 인쇄 할 경우에도 마찬가지입니다. 이것은 여전히 ​​일어나고 있습니다. 실수는 그래프를 호출하는 방법과 같아 보입니다. 언제든지 내 사용량을 볼 때마다 반복적으로 무거워지고 있습니다. 왜 아무 것도 저장하지 않으므로 아무 것도 저장하지 않을 것이고 1 차 반복 사이에는 차이가 없습니다.

저의 관점에서 볼 때, 저는 단지 보내고 있습니다. 하나의 이미지와 출력물을 받고 저장하기. 그래서 내가 보내는 이미지의 개수와 관계없이 작동해야합니다.

GPU (6GB)와 CPU (32GB)에서 모두 시도했습니다.

답변

2

그래프에 이미지가 tf.constant 초로 저장되어있는 것 같습니다. 이것들은 지속적이고, 당신이 겪고있는 것처럼 메모리 문제를 일으킬 것입니다. 대신 placeholders 또는 queues을 권하고 싶습니다. 대기열은 매우 유연하며 매우 높은 성능을 발휘할 수 있지만 상당히 복잡 할 수도 있습니다. 자리 표시 자로 시작하는 것이 좋습니다.

이미지 입력 ​​파이프 라인의 전체 복잡성 예제의 경우 Inception model을 볼 수 있습니다.

+0

전 처리기로 보내지는 이미지는 텐서 (tensor)가되어야합니다. 자리 표시자를 유지하고 이미지를 네트워크에 공급하면 sess.run은 그것을 numpy 배열로 변환하여 전처리 함수에 의해 거부됩니다 . 위에서 언급 한 상수를 사용하지 않고 np 배열로부터 어떻게 텐서를 만들 수 있습니까? –

+0

감사합니다. –