2017-05-02 2 views
0

for 루프에서 텐서를 반복하는 방법은 무엇입니까? ..for 루프에서 텐서 반복?

내 input_tensor의 각 행에 컨볼 루션을 수행하고 싶지만 텐서에서는 반복 할 수 없습니다.

현재 이런 식으로하려고 : 각 입력 작업을 tensorflow 정의하려는처럼

def row_convolution(input): 
    filter_size = 8 
    print input.dtype 
    print input.get_shape() 
    for units in xrange(splits): 
     extract = input[units:units+filter_size,:,:] 
     for row_of_extract in extract: 
      for unit in row_of_extract: 
       temp_list.append((Conv1D(filters = 1, kernel_size = 1, activation='relu' , name = 'conv')(unit))) 
      print len(temp_list) 
      sum_temp_list.append(sum(temp_list)) 
     sum_sum_temp_list.append(sum(sum_temp_list)) 
    conv_feature_map.append(sum_sum_temp_list) 
    return np.array(conv_feature_map) 

답변

0

것 같습니다. 이것은 프레임 워크에 대한 일반적인 오해입니다.

먼저 수행 할 작업을 정의해야하며 모든 작업은 맨 앞에 정의되어야합니다. 일반적으로 다음과 같이 보입니다.

g = tf.Graph() 
with g.as_default(): 
    # define some placeholders to accept your input 
    X = tf.placeholder(tf.float32, shape=[1000,1]) 
    y = tf.placeholder(tf.float32, shape=[1]) 
    # add more operations... 
    Conv1D(...) # add your convolution operations 
    # add the rest of your operations 
    optimizer = tf.train.AdamOptimizer(0.00001).minimize(loss) 

그래프가 모두 정의되었습니다. 고정 된 것으로 간주하고, 다시 아무것도 추가하지 않을 것입니다. = (N을

with g.as_default(), tf.Session() as sess: 
    X_data, y_data = get_my_data() 
    # run this in a loop 
    result = sess.run([optimizer,loss], feed_dict={X:X_data, y:y_data}) 

참고 데이터와 라벨을 일괄 적으로 공급해야하므로 데이터의 첫 번째 차원은 데이터 포인트의 N 번호를 나타냅니다 :

이제 고정 그래프를 통해 데이터를 실행하겠습니다 1은 물론 완벽하게 수용 가능). 데이터를 해당 형식으로 사전 처리해야합니다. 예를 들어, 10 MNIST 숫자의 배치는 모양이 [10,28,28,1] 일 것입니다. 그건 :

  • 10 데이터 샘플
  • 이미지 28 개 픽셀 높이
  • 이미지 때문에 28 픽셀 폭
  • 그것은 그레이 스케일 이미지의 1 개 컬러 채널
+0

나는 내 모델을 구축하고 있습니다된다 케라는 tensorflow 위에 있습니다. 나는 lamdba 레이어를 사용하여 keras에서 레이어를 정의하여 그 작업을 수행합니다 .. 내가 사용하는 기능이 무엇 인지요 .. 내가하고있는 일은 keras 또는 tensorflow 프레임 워크에서 합법적인지도 확실하지 않습니다 ... keras에 적용 .. 그래서 나는 tensorflow 레이블을 추가하는 실수를 한 것 같아요. –

+0

나는 그것을 배우고 싶지 않다. 단지 Conv1d를 통해 포맷되고 출력 될 때 데이터가 전달되기를 바란다. –

+0

같은 원리가 적용되면 그래프를 정의한 다음'sess.run (...) '을 사용해야합니다. 추론을하는 경우 최적화 OP를 요청하지 않고 관심있는 결과를 산출하는 OP를 요청합니다. Tensorflow는 요청하지 않으면 역점 현상 및 최적화로 신경 쓰지 않을 것입니다 반환 값. 모델을 이미 훈련했다면 검사 점을로드 할 것이므로 모델 구성 요소를 정의하고 검사 점을로드 한 다음 모델을 터치하고 모델에'sess.run'을 제공하십시오 –

관련 문제