2017-04-05 1 views
1

최근까지 TF의 모든 코드는 tf.placeholder을 사용하여 입력을 나타 냈습니다. 그것은 내 네트워크에 임의의 길이의 일괄 처리를 공급하여 다른 장소에서 동일한 코드를 사용할 수있게 해주기 때문에 매우 편리합니다 (교육, 테스트, 예측 ...)TensorFlow 자리 표시 자없이 작업

feed_dict은 그렇게 밝혀졌습니다. 느린, 기본적으로 자리 표시 자 대신 tf.Variable을 사용하는 파이프 라인을 사용하고 변경하기를 원했습니다. 각 변수는 고정 길이 텐서이며 네트워크의 입력으로 사용되는 배치를 나타냅니다.

제 문제는 자리 표시자를 "풀어 놓고"데이터를 피드해야하는 경우 파이프 라인이 입력 데이터에 바인딩된다는 것입니다. 예를 들어, 일단 크기 10의 배치로 교육 데이터를 사용하도록 파이프 라인을 설정하면 12 가지 예제의 배치에서 테스트 세트의 데이터를 사용할 수 없습니다.

또는 그럴 수 있습니까?

자리 표시 자없이 작업하는 올바른 방법은 무엇입니까?

+0

이미지 데이터 또는 텍스트로 작업하는 경우 그냥 궁금해서? – Aaron

+0

이전에 답변을 드리지 못해 죄송합니다. 실제로는 아닙니다. 나는 물리적 신호 데이터로 작업하고 있었다. – AkiRoss

답변

0

고정 크기 변수를 사용하는 것보다 자리 표시 자없이 작업하는 다른 방법을 찾지 못했습니다.

분명히 공식 문서에서 제안한 것보다 파이프 라인을 사용하는 다른 권장 방법이 없습니다 (reading data).

0

cifar10 예는 자리 표시자를 사용하지 않습니다. 그것은 tf.FixedLengthRecordReader와 tf.train.shuffle_batch를 사용합니다. 생성 된 입력 이미지 배치는 ​​자리 표시 자없이 CNN에 직접 전달됩니다.

tensorflow의 공식 튜토리얼을 참조하여 파이썬 코드 제발 :

https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_train.py

또한, 시험 시간에, 당신은 기차 데이터로부터 배치의 다른 번호로 테스트 데이터의 파이프 라인을 연결할 수 있습니다.

평가 코드를 참조하십시오 : https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_eval.py

관련 문제