تحذير: تم إهمال واجهة برمجة التطبيقات هذه وستتم إزالتها في إصدار مستقبلي من TensorFlow بعد استقرار الاستبدال .

StridedSlice

الطبقة النهائية العامة StridedSlice

إرجاع شريحة متتالية من "الإدخال".

لاحظ أن معظم مستخدمي Python سيرغبون في استخدام Python Tensor.__getitem__ أو Variable.__getitem__ بدلاً من هذا المرجع مباشرةً.

الهدف من هذا المرجع هو إنتاج موتر جديد بمجموعة فرعية من العناصر من موتر "n" الأبعاد "الإدخال". يتم اختيار المجموعة الفرعية باستخدام تسلسل من مواصفات النطاق المتفرق "m" المشفرة في وسيطات هذه الوظيفة. لاحظ أنه في بعض الحالات ، يمكن أن تكون "m" مساوية لـ "n" ، ولكن لا يلزم أن يكون هذا هو الحال. يمكن أن يكون كل إدخال لمواصفات النطاق واحدًا مما يلي:

- علامة القطع (...). تُستخدم الأشكال الناقصة للإشارة إلى أبعاد صفرية أو أكثر من تحديد الأبعاد الكاملة ويتم إنتاجها باستخدام "قناع_القطع". على سبيل المثال ، "foo [...]` هي شريحة الهوية.

- محور جديد. يُستخدم هذا لإدخال شكل جديد = بُعد واحد ويتم إنتاجه باستخدام "قناع_محور جديد". على سبيل المثال ، `foo [:، ...]` حيث يكون `foo` هو الشكل` (3، 4) `ينتج موتر` (1، 3، 4) `.

- نطاق "البدء: النهاية: الخطوة". يستخدم هذا لتحديد مقدار الاختيار من بُعد معين. يمكن أن يكون "stride" أي عدد صحيح ولكن 0. "start" هو عدد صحيح يمثل فهرس القيمة الأولى المراد تحديدها بينما يمثل "end" فهرس القيمة الأخيرة المراد تحديدها. عدد القيم المحددة في كل بُعد هو "end - begin" إذا كانت "stride> 0" و "start - end" إذا كانت "stride <0". يمكن أن تكون "start" و "end" سالبة حيث يكون "-1" هو العنصر الأخير ، و "-2" هو العنصر الثاني بعد الأخير. يتحكم "start_mask" في ما إذا كان سيتم استبدال "start" المعطى صراحةً بقيمة فعالة ضمنية "0" إذا كانت "stride> 0" و "-1" في حالة "stride <0". يعتبر "end_mask" مماثلاً ولكنه ينتج العدد المطلوب لإنشاء أكبر فاصل زمني مفتوح. على سبيل المثال ، بالنظر إلى الشكل `(3،)` tensor `foo [:]` ، فإن "البدء" و "النهاية" هما "0" و "3". لا تفترض أن هذا يعادل `foo [0: -1]` الذي له "بداية" و "نهاية" فعّالة لـ "0" و "2". مثال آخر هو `foo [-2 :: - 1]` الذي يعكس البعد الأول للموتر بينما يسقط الأخيرين (في عناصر الترتيب الأصلية). على سبيل المثال `foo = [1،2،3،4]؛ foo [-2 :: - 1] `هو` [4،3] `.

- فهرس واحد. يستخدم هذا للاحتفاظ فقط بالعناصر التي لها فهرس معين. على سبيل المثال (`foo [2،:]` على شكل `(5،6)` ينتج موتر الشكل `(6،)` موتر. هذا مرمز في `start` و` end` و `shrink_axis_mask`.

يتم ترميز كل تحديد نطاق مفاهيمي في حجة المرجع. من الأفضل فهم هذا الترميز من خلال النظر في مثال غير تافه. على وجه الخصوص ، `foo [1، 2: 4، None، ...،: -3: -1،:]` سيتم ترميزه كـ

begin = [1, 2, x, x, 0, x] # x denotes don't care (usually 0)
 end = [2, 4, x, x, -3, x]
 strides = [1, 1, x, x, -1, 1]
 begin_mask = 1<<4 | 1<<5 = 48
 end_mask = 1<<5 = 32
 ellipsis_mask = 1<<3 = 8
 new_axis_mask = 1<<2 = 4
 shrink_axis_mask = 1<<0 = 1
 
في هذه الحالة إذا كان `foo.shape` هو (5، 5، 5 ، 5 ، 5 ، 5) يصبح الشكل النهائي للشريحة (2 ، 1 ، 5 ، 5 ، 2 ، 5). دعونا نسير خطوة بخطوة من خلال مواصفات كل حجة.

1. يتم تحويل الوسيطة الأولى في مثال الشريحة إلى `البدء = 1` و` النهاية = البداية + 1 = 2`. لإزالة الغموض عن المواصفات الأصلية "2: 4" قمنا أيضًا بتعيين البت المناسب في "shrink_axis_mask".

2. "2: 4" يساهم في 2 ، 4 ، 1 للبدء ، والنهاية ، والخطوة. جميع الأقنعة لها بتات صفر المساهمة.

3. لا شيء مرادف لـ tf.newaxis . هذا يعني إدخال بُعد بحجم 1 في الشكل النهائي. تساهم القيم الوهمية في البداية والنهاية والخطوة ، بينما يتم تعيين بت new_axis_mask.

4. `...

5. ": -3: -1" يوضح استخدام المؤشرات السلبية. يتم تحويل الفهرس السلبي "i" المرتبط ببُعد له شكل `s` إلى فهرس موجب` s + i`. لذا يصبح "-1" "s-1" (أي العنصر الأخير). يتم إجراء هذا التحويل داخليًا ، لذا تبدأ ، ونهاية ، وتتلقى الخطوات x و -3 و -1. تم تعيين بت start_mask المناسب للإشارة إلى أن نطاق البداية هو النطاق الكامل (تجاهل x).

6. `: 'يشير إلى أن المحتويات الكاملة للبعد المقابل محددة. هذا يعادل `::` أو `0 :: 1`. البداية والنهاية والخطوات تتلقى 0 و 0 و 1 على التوالي. تم أيضًا تعيين البتات المناسبة في "start_mask" و "end_mask".

المتطلبات : `0! = خطوات [i] لـ i في [0، m)` يجب أن يكون قناع ellipsis_mask قوة اثنين (علامة حذف واحدة فقط) `

فئات متداخلة

صف دراسي StridedSlice.Options السمات الاختيارية لـ StridedSlice

الطرق العامة

الإخراج <T>
asOutput ()
إرجاع المقبض الرمزي للموتر.
ثابت StridedSlice.Options
startMask (Long startMask)
ثابت <T ، U يمتد رقم> StridedSlice <T>
إنشاء ( نطاق النطاق ، عامل التشغيل <T> الإدخال ، عامل التشغيل <U> يبدأ ، عامل التشغيل <U> النهاية ، المشغل <U> خطوات ، خيارات ... خيارات)
طريقة المصنع لإنشاء فئة التفاف لعملية StridedSlice جديدة.
ثابت StridedSlice.Options
قناع القطع (قناع القطع الطويل)
ثابت StridedSlice.Options
قناع النهاية (قناع نهاية طويلة)
ثابت StridedSlice.Options
newAxisMask (Long newAxisMask)
الإخراج <T>
ثابت StridedSlice.Options
shrinkAxisMask (طويل يتقلص قناع المحور)

الطرق الموروثة

الطرق العامة

الإخراج العام <T> كإخراج ()

إرجاع المقبض الرمزي للموتر.

المدخلات لعمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. تستخدم هذه الطريقة للحصول على مقبض رمزي يمثل حساب المدخلات.

ستريديدشلايس ستريديد العامة ثابتة خيارات قناع البدء (قناع طويل يبدأ)

المعلمات
startMask قناع بت حيث يكون الجزء الأول 1 يعني تجاهل قيمة البداية وبدلاً من ذلك استخدام أكبر فاصل زمني ممكن. في وقت التشغيل ، سيتم استبدال بداية [i] بـ `[0، n-1)` إذا كانت `stride [i]> 0` أو` [-1، n-1] `إذا كانت` خطوة [i] <0`

public static StridedSlice <T> إنشاء ( نطاق النطاق ، عامل التشغيل <T> الإدخال ، عامل التشغيل <U> start ، Operand < U> end ، Operand <U> strides ، Options ... options)

طريقة المصنع لإنشاء فئة التفاف لعملية StridedSlice جديدة.

المعلمات
مجال النطاق الحالي
يبدأ يحدد `start [k]` الإزاحة في مواصفة النطاق `k`th. سيتم تحديد البعد الدقيق الذي يتوافق معه حسب السياق. سيتم تثبيت القيم خارج الحدود بصمت. إذا كان "k" بت "start_mask" ، فسيتم تجاهل "start [k]` ويتم استخدام النطاق الكامل للبعد المناسب بدلاً من ذلك. تؤدي القيم السالبة إلى بدء الفهرسة من أعلى عنصر ، على سبيل المثال إذا كان `foo == [1،2،3]` ثم `foo [-1] == 3`.
نهاية يشبه `end [i]` "البدء" باستثناء أن "end_mask" يُستخدم لتحديد النطاقات الكاملة.
خطوات واسعة يحدد `strides [i]` الزيادة في مواصفة `i`th بعد استخراج عنصر معين. المؤشرات السلبية ستعكس الترتيب الأصلي. قيم النطاق أو الخارج مثبتة على `[0 ، خافت [i]) إذا كانت شريحة [i]> 0` أو` [-1 ، خافت [i] -1] إذا كانت شريحة [i] <0`
والخيارات يحمل قيم سمات اختيارية
عائدات
  • مثيل جديد من StridedSlice

قناع القطع الثابت العام StridedSlice.Options (قناع القطع الطويل)

المعلمات
قناع القطع قناع بت حيث يعني البت "i" أن الموضع "i" هو في الواقع علامة حذف. يمكن أن يكون البت الواحد على الأكثر 1. إذا كان `قناع_القطع == 0` ، فسيتم توفير قناع حذف ضمني لـ` 1 << (م + 1) `. هذا يعني أن `foo [3: 5] == foo [3: 5، ...]`. ينشئ علامة القطع ضمنيًا العديد من مواصفات النطاق حسب الضرورة لتحديد النطاق المقطوع بشكل كامل لكل بُعد. على سبيل المثال ، بالنسبة للموتر رباعي الأبعاد `foo` ، تشير الشريحة` foo [2، ...، 5: 8] `إلى` foo [2،:،:، 5: 8] `.

عامة ثابتة StridedSlice.Options endMask (Long endMask)

المعلمات
قناع النهاية مماثل لـ "start_mask"

ستريديدشلايس.خيارات جديدة أكسيسماس (قناع جديد طويل)

المعلمات
newAxisMask قناع بت حيث يعني البت "i" أن كونه 1 يعني أن المواصفات "i" تنشئ بعدًا جديدًا للشكل 1. على سبيل المثال ، "foo [: 4، tf.newaxis،: 2]` سينتج شكلاً `(4، 1، 2)` موتر.

الإخراج العام <T> الإخراج ()

ستريديدشلايس.الخيارات تتقلص أكسيس قناع (طويل يتقلص أكسيسماسك)

المعلمات
يتقلص أكسيس قناع قناع بت حيث يشير البتة `i` إلى أن المواصفات` i` يجب أن تقلص الأبعاد. يجب أن تتضمن البداية والنهاية شريحة بحجم 1 في البعد. على سبيل المثال ، في لغة python ، قد يفعل المرء `foo [:، 3،:]` والذي سينتج عنه أن يكون `shrink_axis_mask` هو 2.