2016-09-02 7 views
0

私は現在、16 x 16 x 2の入力テンソルで始まるネットワークを持っていますが、いくつかのコンボリューションとプーリング演算を実行し、これを次のように宣言されたテンソルに減らします。Tensorflow Concatエラー:形状の不一致

x1 = tf.Variable(tf.constant(1.0, shape=[32])) 

次に、テンソルは、マトリックス乗算とrelusの2つ以上の層を通過してから、カテゴリを出力します。

私がしたいのは、上のベクトルに別の10個のパラメータを追加して畳み込みステージの出力を拡張することです。

私はこのように定義されているデータがロードされたプレースホルダがあります。私はこのように一緒にこれらの変数を連結しようとしている

x2 = tf.placeholder(tf.float32, [None,10]) 

xnew = tf.concat(0,[x1,x2]) 

私は取得していますが次のエラーメッセージが表示されます。

ValueError: Shapes (32,) and (10,) are not compatible 

私は単純なことがあると確信しています間違っていますが、私はそれを見ることができません。

答えて

0

プレースホルダの形にNoneが表示されている理由は分かりません。それを削除すると、それは動作するはずです

+0

私は'とValueErrorが取得することを行うと – James

2

x1x2のランクがそれぞれ1と2であるため、concatが失敗することはありません。ここで私の作品例です。

x1 = tf.Variable(tf.constant(1.0, shape=[32])) 
# create a placeholder that will hold another 10 parameters 
x2 = tf.placeholder(tf.float32, shape=[10]) 
# concatenate x1 and x2 
xnew = tf.concat(0, [x1, x2]) 
init = tf.initialize_all_variables() 
with tf.Session() as sess: 
    sess.run(init) 
    _xnew = sess.run([xnew], feed_dict={x2: range(10)}) 

enter image description here

1

理由はtensorflowバージョンに可能性があります。 tensorflow最新の公式APIから

は、tf.conatは、だから、

tf.concat

連結( 値、 軸、 名= 'CONCAT' )

として定義されますより良い方法は、この関数をキー値で呼び出すことです。 次のコードを試しましたが、エラーはありません。

xnew = tf.concat(axis=0, values=[x1, x2]) 

------------------------------------------- -------

次のように公式APIの説明をコピーします。 tensorflow /パイソン/ OPS/array_ops.pyに定義 連結tf.concat

( 値、 軸、= '連結' 名)

。テンソル変換>スライスし、1次元に沿って

連結しテンソルへの参加:

は、ガイドを参照してください。

次元軸に沿ったテンソル値のリストを連結します。値[i] .shape = [D0、D1、... Daxis(i)、... Dn]の場合、連結結果は形状を有する。

[D0、D1、... Raxis、... Dn ]

Raxis = sum(Da​​xis(i)) つまり、入力テンソルからのデータは軸次元に沿って結合されます。

入力テンソルの次元数は一致しなければならず、軸を除くすべての次元は等しくなければなりません。例えば

:シェイプ(32)と() ` 互換性がありません。

t1 = [[1, 2, 3], [4, 5, 6]] 
t2 = [[7, 8, 9], [10, 11, 12]] 
tf.concat([t1, t2], 0) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 
tf.concat([t1, t2], 1) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]] 

# tensor t3 with shape [2, 3] 
# tensor t4 with shape [2, 3] 
tf.shape(tf.concat([t3, t4], 0)) ==> [4, 3] 
tf.shape(tf.concat([t3, t4], 1)) ==> [2, 6] 
関連する問題