2017-05-02 25 views
0

forループでテンソルを反復するにはどうすればよいですか?..forループでテンソルを反復するか?

私のinput_tensorの各行に畳み込みを行いたいのですが、テンソルで反復できないようです。

は現在、このようにそれをしよう:

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

あなたは、各入力に対してtensorflow操作を定義しようとしているように見えます。これはフレームワークに関する一般的な誤解です。

まず、実行する操作を定義する必要があります。すべての操作は前面に定義する必要があります。通常は次のようになります。

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

ですケラスはテンソルフローの上にあります。私はlamdbaレイヤーを使ってkerasのレイヤーを定義し、これらの操作を行います。私が使用している機能は何か..私がやっていることがkerasやtensorflowフレームワークでも合法であるかどうかはわかりません...ケラスに適用されます..私はテンソルフローラベルを追加することに間違いを犯したと思います。 –

+0

私はそれを訓練したくありません。私はConv1dでフォーマットされて出力されるようにデータを渡したいだけです。 –

+0

同じ原則が適用され、グラフを定義してから 'sess.run(...)'を使う必要があります。あなたが推論をしているだけなら、最適化OPをリクエストするのではなく、興味のある結果を生成するOPをリクエストします.Tensorflowは、リクエストしていない場合、バックプロップと最適化を気にしません戻り値すでにモデルを訓練している場合は、チェックポイントをロードするので、モデルコンポーネントを定義し、チェックポイントをロードしてから触れないで、モデルに 'sess.run'を送ります –

関連する問題