tf.dataset
이 실제로 작동하므로 학습 속도를 2 배까지 높일 수있었습니다. 하지만 여전히 성능 문제가 있습니다. GPU의 사용률은 낮습니다 (여러 작업자와 tf.dataset
사용에도 불구하고). 내 사용 사례는 다음입니다 : 교육 사례TF Api Dataset : 초기화
- ~ 400, 각각 10 개 입력 채널을
작업은 ResNet50를 사용하여 분할은 (~ 5기가바이트을). 앞으로 - 뒤로 걸릴 ~ 0.15s. 배치 크기 = 32
데이터로드가 빠르다. ~ 0.06 초가 걸린다.
내 질문은 : 각 에포크 후에 초기화를 제거하고 데이터를 지속적으로 공급할 수있는 옵션이 있습니까?
dataset.repeat(10)
을 설정하려했지만 도움이되지 않습니다.
로딩 코드와 기차
은 여기에 있습니다 : https://gist.github.com/melgor/0e681a4fe8f125d25573aa30d8ace5f3이 모델은 영상 분할을위한 Ecnoder - 디코더 아이디어에 불과 ResNet 변환된다. 대부분의 코드는 https://github.com/argman/EAST에서 가져 왔지만 여기서는 로딩 속도가 매우 느리기 때문에 TfRecords로 변환하고 싶습니다.
그것은 소스를 보지 않고 같은 질문에 대답하기 어렵다. 나는 최근에 데이터 세트를 가지고 놀았으며 dataset.repeat()가 매번 반복자를 다시 초기화하는 것보다는 이동하는 방법이라고 생각합니다. 그러나 당신은 pipeline에서 repeat()를하고있는 곳을 조심해야합니다. –
답해 주셔서 감사합니다. 디버깅에 유용 할 수 있다면 몇 가지 코드를 추가했습니다. 현재이 문제를 해결할 방법이 있는지 확실하지 않습니다. – melgor89
batch() 전에 repeat()를 이동하고 repeat()를 사용하여 수행하는 훈련의 수를 제어하기 때문에 초기화 가능한 시간 대신 하나의 시간 반복자를 사용할 수 있습니다. –