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