2016-08-04 2 views
0

최근에는 tensorflow를 사용하기 시작했으며 feed_dict의 기능에 대해 혼란스러워합니다. 여기에 '없음'도 'BATCH_SIZE'tensorflow feed_dict의 작동 방식에 혼란이 있음

x = tf.placeholder(tf.float32, shape=[None, 784]) 
수 없습니다 수 있도록 tensorflow 웹 사이트에서 mnist 예를 보면

, 배는, 이미지의 모든 훈련 반복의 새로운 배치로 채워집니다 상징적 인 자리 표시 자입니다 이 훈련 루프 동안

x_image = tf.reshape(x, [-1,28,28,1]) 

모양 28x28 2 차원 이미지에 1x784 모양 다시 평평있어에서

이 튜토리얼의 길쌈 부분을 찾고, X 모양을 변경하는 명령있다, X는 명령을 통해 공급된다

train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 

제 질문은 x 값을 입력 할 때 x가 관련된 모든 연산을 tensorflow가 자동으로 벡터화합니까? 예를 들어 예를 들어 정의 할 때

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) 

이것은 전체 배치에서 자동으로 작동합니까?

x가 각 행이 평평한 이미지 인 ndarray 인 경우 x 자리 표시 자에 '없음'을 지정 했으므로 tensorflow는 각 행을 개별 학습 샘플로 사용하고 모든 후속 연산을 벡터화합니다.

답변

2

정적 모양 추론 (예 : tensor.get_shape)에 인수가 사용되며 선택 사항입니다. TensorFlow는 자동으로 어떤 것도 vectorize하지 않지만, 이진 cwise ops에서는 broadcasting을 사용합니다. 귀하의 예에서 tf.conv2d은 각 행을 예제로 취급하는 작업이므로 일괄 처리와 함께 작동하지만 개별 예제에서는 작동하지 않습니다. 또한 batch[0]은 일괄 처리 입력이며 batch[1]은 일련의 라벨입니다.

+0

아, 생각, 나는 tensorflow api에서 : "convolution ops가 이미지의 배치에 2-D 필터를 스윕합니다." 텐서 플로우가 자동으로 연산을 벡터화하는 것은 아닙니다. conv2d가 본질적으로 배치 작업을 할 수있는 정도입니다. – beeCwright

관련 문제