tf.concat



Tf Concat



tf.concat( values, axis, name='concat' )

テンソルは1次元に沿って直列に接続されています。次元軸に沿ってテンソル値のリストを接続します。 value [i] .shape = [D0、D1、... Daxis(i)、... Dn]の場合、結合結果の形状は次のようになります。

[D0, D1, ... Raxis, ...Dn] Raxis = sum(Daxis(i))

つまり、入力テンソルからのデータは軸の次元に沿って接続されます。入力テンソルの寸法は一致する必要があり、軸を除くすべての寸法は等しくなければなりません。



例:

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]

Pythonでは、軸も負の値になる可能性があります。負の軸は、ランクの終わり、つまりaxis + rank(values) -th次元から数えると解釈されます。



例:

t1 = [[[1, 2], [2, 3]], [[4, 4], [5, 3]]] t2 = [[[7, 4], [8, 4]], [[2, 10], [15, 11]]] tf.concat([t1, t2], -1) --------------------------------------- [[[ 1, 2, 7, 4], [ 2, 3, 8, 4]], [[ 4, 4, 2, 10], [ 5, 3, 15, 11]]] ---------------------------------------

注:新しい軸に沿って接続する場合は、次のようなスタックの使用を検討してください。

tf.concat([tf.expand_dims(t, axis) for t in tensors], axis)

次のように書くこともできます:



tf.stack(tensors, axis=axis)

パラメータ:

  • values :テンソルオブジェクトリストまたは単一のテンソル。
  • axis :0-Dint32テンソル。接続するディメンション。 [-rank(values)、rank(values)]の範囲内である必要があります。 Pythonと同様に、軸のインデックスも0に基づいています。[0、rank(values)]の範囲の正の軸は、最初の軸の次元です。負の軸は、軸+ランク(値)-寸法を表します。
  • 名前:操作の名前(オプション)。

戻り値:

  • 直列の入力テンソルによって形成されるテンソル。

元のリンク: https://tensorflow.google.cn/versions/r1.9/api_docs/python/tf/concat?hl=en