私は例を使用してコードを説明しますので、私はいくつかのケースを作成しましたが、最初にすべての私はあなたにtf.slice(input, begin, size) paramettersを説明します:
input
はテンソルへのREFです。
begin
は、スライスのインデックスです。
size
は、スライスのオフセットです。
input
からインデックスベクトルとしてbegin
とsize
の治療、begin + size
でbegin
インデックスと終了時に始まり、サブテンソルを選択するので、tf.slice
作品。以下の例はこのことを明らかにする:この場合
batch = tf.constant([
[#First image
[
[0.0,10.0],
[1.0,11.0]
],
[
[3.0,33.0],
[4.0,44.0]
]
],
[#Second image
[
[5.0,55.0],
[6.0,66.0]
],
[
[7.0,77.0],
[8.0,88.0]
]
]
])
slice1 = tf.slice(batch,[0,0,0,0], [1,1,1,1])
slice2 = tf.slice(batch,[0,1,0,0], [1,1,2,2])
slice3 = tf.slice(batch,[1,1,1,0], [1,1,1,2])
slice4 = tf.slice(batch,[0,0,0,0], [2,2,2,2])
sess = tf.InteractiveSession()
print("slice1: \n" + str(slice1.eval()) + "\n")
print("slice2: \n" + str(slice2.eval()) + "\n")
print("slice3: \n" + str(slice3.eval()) + "\n")
print("slice4: \n" + str(slice4.eval()) + "\n")
出力がある:それは[0,0,0,0]
で始まり、一つの要素を選ぶのため
slice1:
[[[[ 0.]]]]
slice2:
[[[[ 3. 33.]
[ 4. 44.]]]]
slice3:
[[[[ 8. 88.]]]]
slice4:
[[[[ 0. 10.]
[ 1. 11.]]
[[ 3. 33.]
[ 4. 44.]]]
[[[ 5. 55.]
[ 6. 66.]]
[[ 7. 77.]
[ 8. 88.]]]]
slice1
は、テンソルの最初の要素を選択します。
slice2
は、[0,1,0,0]
で始まり、2つの第1次元で1要素を選択し、3次元および4次元で2要素を選ぶため、テンソルの最初の要素を選択します。
slice3
は、[1,1,1,0]
で始まり、最初の3つの次元で1つの要素と最後の2つの要素のみを選択するため、テンソルの最初の要素を選択します。それは寸法のデ数は、すべてのスライドに同じであることをすべてのテンソル
注意を覆うように、それは、寸法によって[0,0,0,0]
と二つの要素から始まりのため
slice4
はテンソルのすべての要素を選択します。要素が1つしかないディメンションを削除する場合は、tf.squeezeを使用できます。
このような詳細な説明をいただきありがとうございます – rida