מחלקים `נתונים` לטנזורים `num_partitions` באמצעות אינדקסים מ`מחיצות`.
עבור כל אינדקס tuple `js` בגודל `partitions.ndim`, הפרוסה `data[js, ...]` הופכת לחלק מ`outputs[partitions[js]]`. הפרוסות עם `מחיצות[js] = i` ממוקמות ב`פלטים[i]` בסדר לקסיקוגרפי של `js`, והממד הראשון של `פלטים[i]` הוא מספר הערכים ב`מחיצות` שווה ל `אני`. בפירוט,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
לְדוּגמָה:
# Scalar partitions.
partitions = 1
num_partitions = 2
data = [10, 20]
outputs[0] = [] # Empty with shape [0, 2]
outputs[1] = [[10, 20]]
# Vector partitions.
partitions = [0, 0, 1, 1, 0]
num_partitions = 2
data = [10, 20, 30, 40, 50]
outputs[0] = [10, 20, 50]
outputs[1] = [30, 40]
מעלה: * `InvalidArgumentError` במקרים הבאים: - אם המחיצות אינן בטווח `[0, num_partiions)` - אם `partitions.shape` אינו תואם את הקידומת של הארגומנט `data.shape`.
שיטות ציבוריות
סטטי <T> DynamicPartition <T> | |
איטרטור< Operand <T>> | איטרטור () |
רשימה< פלט <T>> | פלטים () |
שיטות בירושה
שיטות ציבוריות
Public Static DynamicPartition <T> create ( scope scope, Operand <T> data, Operand <Integer> מחיצות, Long numPartitions)
שיטת מפעל ליצירת מחלקה העוטפת פעולת DynamicPartition חדשה.
פרמטרים
תְחוּם | ההיקף הנוכחי |
---|---|
מחיצות | כל צורה. מדדים בטווח `[0, num_partitions)`. |
numPartitions | מספר המחיצות לפלט. |
מחזיר
- מופע חדש של DynamicPartition