tensorflow:: Tensor

#include <tensor.h>

يمثل مصفوفة من القيم ذات أبعاد n.

ملخص

البناة والمدمرون

Tensor ()
يُنشئ موترًا من نوع float أحادي البعد، يحتوي على 0 عنصر.
Tensor (DataType type, const TensorShape & shape)
يقوم بإنشاء موتر من type shape المحددين.
Tensor (Allocator *a, DataType type, const TensorShape & shape)
يقوم بإنشاء موتر type shape الإدخال، باستخدام المخصص a لتخصيص المخزن المؤقت الأساسي.
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr)
يقوم بإنشاء موتر type shape الإدخال، باستخدام المخصص a و "allocation_attr" المحدد لتخصيص المخزن المؤقت الأساسي.
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf)
يقوم بإنشاء موتر باستخدام نوع البيانات المدخلة والشكل والمخزن المؤقت.
Tensor (DataType type)
ينشئ موترًا فارغًا من نوع البيانات المحدد.
Tensor (float scalar_value)
Tensor (double scalar_value)
Tensor (int32 scalar_value)
Tensor (uint32 scalar_value)
Tensor (uint16 scalar_value)
Tensor (uint8 scalar_value)
Tensor (int16 scalar_value)
Tensor (int8 scalar_value)
Tensor (tstring scalar_value)
Tensor (complex64 scalar_value)
Tensor (complex128 scalar_value)
Tensor (int64 scalar_value)
Tensor (uint64 scalar_value)
Tensor (bool scalar_value)
Tensor (qint8 scalar_value)
Tensor (quint8 scalar_value)
Tensor (qint16 scalar_value)
Tensor (quint16 scalar_value)
Tensor (qint32 scalar_value)
Tensor (bfloat16 scalar_value)
Tensor (Eigen::half scalar_value)
Tensor (ResourceHandle scalar_value)
Tensor (const char *scalar_value)
Tensor (const Tensor & other)
مُنشئ النسخ.
Tensor ( Tensor && other)
نقل المُنشئ.
~Tensor ()

الوظائف العامة

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
يملأ proto بمحتوى *this الموتر.
AsProtoTensorContent (TensorProto *proto) const
void
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape)
Status
انسخ الموتر الآخر إلى هذا الموتر، وأعد تشكيله، وأعد تفسير نوع بيانات المخزن المؤقت.
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT
bool
انسخ الموتر الآخر إلى هذا الموتر وأعد تشكيله.
DebugString (int num_values) const
string
ملخص سهل القراءة للموتر مناسب لتصحيح الأخطاء.
DebugString () const
string
DeviceSafeDebugString () const
string
FillDescription (TensorDescription *description) const
void
قم بتعبئة نموذج TensorDescription بالبيانات الوصفية حول الموتر والتي تكون مفيدة للمراقبة وتصحيح الأخطاء.
FromProto (const TensorProto & other) TF_MUST_USE_RESULT
bool
قم بتحليل البيانات other وإنشاء الموتر.
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT
bool
IsAligned () const
bool
تُرجع القيمة "صحيح" إذا كان هذا الموتر متوافقًا.
IsInitialized () const
bool
هل تم تهيئة هذا الموتر إذا لزم الأمر؟
IsSameSize (const Tensor & b) const
bool
NumElements () const
int64
أداة وصول ملائمة لشكل الموتر.
RefCountIsOne () const
bool
SharesBufferWith (const Tensor & b) const
bool
Slice (int64 dim0_start, int64 dim0_limit) const
قم بتقسيم هذا الموتر على طول البعد الأول.
SubSlice (int64 index) const
حدد شريحة فرعية من هذا الموتر على طول البعد الأول.
SummarizeValue (int64 max_entries, bool print_v2) const
string
قم بتحويل أول قيم max_entries في *this إلى سلسلة نصية.
TotalBytes () const
size_t
يُعيد هذا الأمر تقدير استخدام الذاكرة لهذا الموتر.
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape)
void
يشبه BitcastFrom، لكن CHECK يفشل إذا لم يتم استيفاء أي من الشروط المسبقة.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >:: Tensor
أعد بيانات الموتر إلى Eigen::Tensor بالشكل الجديد المحدد في new_sizes وقم بتحويلها إلى نوع بيانات جديد T
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
أعد بيانات الموتر إلى Eigen::Tensor بالشكل الجديد المحدد في new_sizes وقم بتحويلها إلى نوع بيانات جديد T
bit_casted_tensor ()
TTypes< T, NDIMS >:: Tensor
أعد بيانات الموتر إلى Eigen::Tensor بنفس الحجم ولكن مع تحويل بتّي إلى نوع البيانات المحدد T
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
أعد بيانات الموتر إلى Eigen::Tensor بنفس الحجم ولكن مع تحويل بتّي إلى نوع البيانات المحدد T
data () const
void *
dim_size (int d) const
int64
أداة وصول ملائمة لشكل الموتر.
dims () const
int
أداة وصول ملائمة لشكل الموتر.
dtype () const
DataType
يُعيد نوع البيانات.
flat ()
TTypes< T >::Flat
قم بإرجاع بيانات الموتر كـ Eigen::Tensor من نوع البيانات وشكل محدد.
flat () const
TTypes< T >::ConstFlat
flat_inner_dims ()
TTypes< T, NDIMS >:: Tensor
يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، مع دمج جميع أبعاد Tensor باستثناء NDIMS-1 الأخير في البعد الأول للنتيجة.
flat_inner_dims () const
TTypes< T, NDIMS >::ConstTensor
flat_inner_outer_dims (int64 begin)
TTypes< T, NDIMS >:: Tensor
يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، حيث يقوم بطي أبعاد Tensor 'begin' الأولى إلى البعد الأول من النتيجة وأبعاد Tensor الأخيرة dims() - 'begin' - NDIMS إلى البعد الأخير من النتيجة.
flat_inner_outer_dims (int64 begin) const
TTypes< T, NDIMS >::ConstTensor
flat_outer_dims ()
TTypes< T, NDIMS >:: Tensor
يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، مع دمج جميع أبعاد Tensor باستثناء أول NDIMS-1 في البعد الأخير من النتيجة.
flat_outer_dims () const
TTypes< T, NDIMS >::ConstTensor
matrix ()
TTypes< T >::Matrix
matrix () const
TTypes< T >::ConstMatrix
operator= (const Tensor & other)
عامل التعيين. يتشارك هذا الموتر في مساحة التخزين الأساسية لموتر آخر.
operator= ( Tensor && other)
عامل النقل. راجع مُنشئ النقل لمزيد من التفاصيل.
reinterpret_last_dimension ()
TTypes< T, NDIMS >:: Tensor
قم بإرجاع بيانات الموتر إلى Eigen::Tensor مع تحويل عناصر البعد الأخير إلى عناصر مفردة من نوع أكبر.
reinterpret_last_dimension () const
TTypes< T, NDIMS >::ConstTensor
قم بإرجاع بيانات الموتر إلى Eigen::Tensor مع تحويل عناصر البعد الأخير إلى عناصر مفردة من نوع أكبر.
scalar ()
TTypes< T >::Scalar
أعد بيانات الموتر TensorMap بحجم ثابت 1: TensorMap > .
scalar () const
TTypes< T >::ConstScalar
shape () const
const TensorShape &
يُعيد شكل الموتر.
shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >:: Tensor
shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
tensor ()
TTypes< T, NDIMS >:: Tensor
tensor () const
TTypes< T, NDIMS >::ConstTensor
tensor_data () const
StringPiece
يُرجع StringPiece الذي يربط مخزن الموتر الحالي.
unaligned_flat ()
TTypes< T >::UnalignedFlat
unaligned_flat () const
TTypes< T >::UnalignedConstFlat
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >::UnalignedTensor
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::UnalignedConstTensor
vec ()
TTypes< T >::Vec
قم بإرجاع بيانات الموتر كـ Eigen::Tensor بنوع وأحجام هذا Tensor .
vec () const
TTypes< T >::ConstVec
نسخ ثابتة من جميع الطرق المذكورة أعلاه.

الوظائف العامة

بايتات مخصصة

size_t AllocatedBytes() const 

AsProtoField

void AsProtoField(
  TensorProto *proto
) const 

يملأ proto بمحتوى *this الموتر.

تقوم AsProtoField() بملء الحقل المتكرر لـ proto.dtype() ، بينما تقوم AsProtoTensorContent() بترميز المحتوى في proto.tensor_content() بشكل مضغوط.

AsProtoTensorContent

void AsProtoTensorContent(
  TensorProto *proto
) const 

BitcastFrom

Status BitcastFrom(
  const Tensor & other,
  DataType dtype,
  const TensorShape & shape
)

انسخ الموتر الآخر إلى هذا الموتر، وأعد تشكيله، وأعد تفسير نوع بيانات المخزن المؤقت.

إذا تم إرجاع Status::OK()، فإن الموترين يشتركان الآن في نفس وحدة التخزين الأساسية.

يتطلب هذا الاستدعاء أن يكون الموتر other والنوع والشكل المحدد "متوافقين" (أي أنهما يشغلان نفس عدد البايتات).

خاصة:

shape.num_elements() * DataTypeSize(type)

يجب أن يساوي

other.num_elements() * DataTypeSize(other.dtype())

بالإضافة إلى ذلك، تتطلب هذه الوظيفة ما يلي:

  • حجم نوع البيانات (other.dtype()) لا يساوي صفرًا
  • حجم نوع البيانات (النوع) لا يساوي صفرًا

إذا لم يتم استيفاء أي من المتطلبات، فسيتم إرجاع errors::InvalidArgument.

نسخ من

bool CopyFrom(
  const Tensor & other,
  const TensorShape & shape
) TF_MUST_USE_RESULT

انسخ الموتر الآخر إلى هذا الموتر وأعد تشكيله.

يتشارك هذا الموتر في مساحة التخزين الأساسية لموتر آخر. تُرجع القيمة true " إذا كان other.shape() نفس عدد العناصر ذات shape المُعطى.

DebugString

string DebugString(
  int num_values
) const 

ملخص سهل القراءة للموتر مناسب لتصحيح الأخطاء.

DebugString

string DebugString() const 

DeviceSafeDebugString

string DeviceSafeDebugString() const 

املأ الوصف

void FillDescription(
  TensorDescription *description
) const 

قم بتعبئة نموذج TensorDescription بالبيانات الوصفية حول الموتر والتي تكون مفيدة للمراقبة وتصحيح الأخطاء.

من بروتو

bool FromProto(
  const TensorProto & other
) TF_MUST_USE_RESULT

قم بتحليل البيانات other وإنشاء الموتر.

تُرجع القيمة true إذا نجحت عملية التحليل. أما إذا فشلت، فإن حالة *this تبقى دون تغيير.

من بروتو

bool FromProto(
  Allocator *a,
  const TensorProto & other
) TF_MUST_USE_RESULT

متوازي

bool IsAligned() const 

تُرجع القيمة "صحيح" إذا كان هذا الموتر متوافقًا.

تم التهيئة

bool IsInitialized() const 

هل تم تهيئة هذا الموتر إذا لزم الأمر؟

تعتبر الموترات ذات العناصر الصفرية مهيأة دائمًا، حتى لو لم يتم تعيينها مطلقًا ولم يتم تخصيص أي ذاكرة لها.

حجمها متماثل

bool IsSameSize(
  const Tensor & b
) const 

عدد العناصر

int64 NumElements() const 

أداة وصول ملائمة لشكل الموتر.

RefCountIsOne

bool RefCountIsOne() const 

SharesBufferWith

bool SharesBufferWith(
  const Tensor & b
) const 

شريحة

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

قم بتقسيم هذا الموتر على طول البعد الأول.

أي أن الموتر المُعاد يحقق الشرط returned[i, ...] == this[dim0_start + i, ...]. ويشترك الموتر المُعاد في مخزن الموتر الأساسي مع هذا الموتر.

ملاحظة: قد لا يفي الموتر المُعاد بنفس متطلبات المحاذاة التي يفي بها هذا الموتر، وذلك تبعًا لشكلِه. يجب على المُستدعي التحقق من محاذاة الموتر المُعاد قبل استدعاء بعض الدوال التي تتطلب محاذاة (مثل flat() و tensor() ).

ملاحظة: عند إدخال موتر ذي أبعاد N، تُرجع هذه الطريقة موترًا آخر بأبعاد N أيضًا. إذا كنت ترغب في تحديد موتر فرعي، فراجع SubSlice.

المتطلبات: dims() >= 1 المتطلبات: 0 <= dim0_start <= dim0_limit <= dim_size(0)

شريحة فرعية

Tensor SubSlice(
  int64 index
) const 

حدد شريحة فرعية من هذا الموتر على طول البعد الأول.

عند إدخال موتر ذي أبعاد N، تُعيد هذه الطريقة موترًا بأبعاد N-1، حيث يُمثل الموتر المُعاد شريحةً فرعيةً من الموتر المُدخل على طول البُعد الأول. أما أبعاد N-1 للموتر المُعاد فهي آخر N-1 بُعد من الموتر المُدخل.

ملاحظة: قد لا يفي الموتر المُعاد بنفس متطلبات المحاذاة التي يفي بها هذا الموتر، وذلك تبعًا لشكلِه. يجب على المُستدعي التحقق من محاذاة الموتر المُعاد قبل استدعاء بعض الدوال التي تتطلب محاذاة (مثل flat() و tensor() ).

يتطلب: dims() من أو تساوي 1، ويتطلب أيضًا: 0 <= index < dim_size(0)

تلخيص القيمة

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

قم بتحويل أول قيم max_entries في *this إلى سلسلة نصية.

الموتر

 Tensor()

يُنشئ موترًا من نوع float أحادي البعد، يحتوي على 0 عنصر.

الموتر المُعاد ليس عددًا قياسيًا (شكله {})، بل هو موتر أحادي البعد فارغ (شكله {0}، عدد عناصره يساوي صفرًا). ولأنه لا يحتوي على عناصر، فلا حاجة لتعيين قيمة له، ويتم تهيئته افتراضيًا ( دالة IsInitialized() تساوي true). إذا كان هذا غير مرغوب فيه، ففكّر في إنشاء عدد قياسي ذي عنصر واحد يتطلب تهيئة.

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

يقوم بإنشاء موتر من type shape المحددين.

إذا كانت قيمة LogMemory::IsEnabled() صحيحة، فسيتم تسجيل عملية التخصيص على أنها صادرة من نواة وخطوة غير معروفتين. يُنصح بعدم استدعاء مُنشئ Tensor مباشرةً من داخل Op: استخدم طرق allocate_* الخاصة بـ OpKernelConstruction/OpKernelContext لتخصيص موتر جديد، والتي تسجل النواة والخطوة.

يتم تخصيص المخزن المؤقت الأساسي باستخدام CPUAllocator .

الموتر

 Tensor(
  Allocator *a,
  DataType type,
  const TensorShape & shape
)

يقوم بإنشاء موتر type shape الإدخال، باستخدام المخصص a لتخصيص المخزن المؤقت الأساسي.

إذا كانت قيمة LogMemory::IsEnabled() صحيحة، فسيتم تسجيل عملية التخصيص على أنها صادرة من نواة وخطوة غير معروفتين. يُنصح بعدم استدعاء مُنشئ Tensor مباشرةً من داخل Op: استخدم طرق allocate_* الخاصة بـ OpKernelConstruction/OpKernelContext لتخصيص موتر جديد، والتي تسجل النواة والخطوة.

a أن يعيش هذا الشيء لفترة أطول من عمر هذا الموتر .

الموتر

 Tensor(
  Allocator *a,
  DataType type,
  const TensorShape & shape,
  const AllocationAttributes & allocation_attr
)

يقوم بإنشاء موتر type shape الإدخال، باستخدام المخصص a و "allocation_attr" المحدد لتخصيص المخزن المؤقت الأساسي.

إذا كانت النواة والخطوة معروفتين، فيجب ضبط `allocation_attr.allocation_will_be_logged` على `true`، ويجب استدعاء `LogMemory::RecordTensorAllocation` بعد إنشاء الموتر. يُنصح بعدم استدعاء مُنشئ الموتر مباشرةً من داخل `Op`: استخدم طرق `allocate_*` في `OpKernelConstruction` و`OpKernelContext` لتخصيص موتر جديد، والذي يسجل النواة والخطوة.

a أن يعيش هذا الشيء لفترة أطول من عمر هذا الموتر .

الموتر

 Tensor(
  DataType type,
  const TensorShape & shape,
  TensorBuffer *buf
)

يقوم بإنشاء موتر باستخدام نوع البيانات المدخلة والشكل والمخزن المؤقت.

يكتسب مرجعًا على المخزن المؤقت الذي ينتمي إلى هذا الموتر .

الموتر

 Tensor(
  DataType type
)

ينشئ موترًا فارغًا من نوع البيانات المحدد.

على غرار الدالة Tensor() ، تُرجع هذه الدالة موترًا أحادي البعد، بدون عناصر، مع إرجاع الدالة IsInitialized() القيمة True. راجع توثيق الدالة Tensor() لمزيد من التفاصيل.

الموتر

 Tensor(
  float scalar_value
)

الموتر

 Tensor(
  double scalar_value
)

الموتر

 Tensor(
  int32 scalar_value
)

الموتر

 Tensor(
  uint32 scalar_value
)

الموتر

 Tensor(
  uint16 scalar_value
)

الموتر

 Tensor(
  uint8 scalar_value
)

الموتر

 Tensor(
  int16 scalar_value
)

الموتر

 Tensor(
  int8 scalar_value
)

الموتر

 Tensor(
  tstring scalar_value
)

الموتر

 Tensor(
  complex64 scalar_value
)

الموتر

 Tensor(
  complex128 scalar_value
)

الموتر

 Tensor(
  int64 scalar_value
)

الموتر

 Tensor(
  uint64 scalar_value
)

الموتر

 Tensor(
  bool scalar_value
)

الموتر

 Tensor(
  qint8 scalar_value
)

الموتر

 Tensor(
  quint8 scalar_value
)

الموتر

 Tensor(
  qint16 scalar_value
)

الموتر

 Tensor(
  quint16 scalar_value
)

الموتر

 Tensor(
  qint32 scalar_value
)

الموتر

 Tensor(
  bfloat16 scalar_value
)

الموتر

 Tensor(
  Eigen::half scalar_value
)

الموتر

 Tensor(
  ResourceHandle scalar_value
)

الموتر

 Tensor(
  const char *scalar_value
)

الموتر

 Tensor(
  const Tensor & other
)

مُنشئ النسخ.

الموتر

 Tensor(
  Tensor && other
)

نقل المُنشئ.

بعد هذه المكالمة، يمكن تدميرها بأمان ويمكن تعيينها، لكن الاستدعاءات الأخرى عليها (مثل التلاعب بالشكل) غير صالحة.

إجمالي البايتات

size_t TotalBytes() const 

يُعيد هذا الأمر تقدير استخدام الذاكرة لهذا الموتر.

UnsafeCopyFromInternal

void UnsafeCopyFromInternal(
  const Tensor & other,
  DataType dtype,
  const TensorShape & shape
)

يشبه BitcastFrom، لكن CHECK يفشل إذا لم يتم استيفاء أي من الشروط المسبقة.

هذه الخاصية مهملة. استخدم BitcastFrom بدلاً منها وتحقق من الحالة المُعادة.

bit_casted_shaped

TTypes< T, NDIMS >::Tensor bit_casted_shaped(
  gtl::ArraySlice< int64 > new_sizes
)

أعد بيانات الموتر إلى Eigen::Tensor بالشكل الجديد المحدد في new_sizes وقم بتحويلها إلى نوع بيانات جديد T

يُعد استخدام التحويل الثنائي مفيدًا لعمليات النقل والنسخ. والتحويل الثنائي المسموح به هو الفرق الوحيد عن shaped() .

bit_casted_shaped

TTypes< T, NDIMS >::ConstTensor bit_casted_shaped(
  gtl::ArraySlice< int64 > new_sizes
) const 

أعد بيانات الموتر إلى Eigen::Tensor بالشكل الجديد المحدد في new_sizes وقم بتحويلها إلى نوع بيانات جديد T

يُعد استخدام التحويل الثنائي مفيدًا لعمليات النقل والنسخ. والتحويل الثنائي المسموح به هو الفرق الوحيد عن shaped() .

bit_casted_tensor

TTypes< T, NDIMS >::Tensor bit_casted_tensor()

أعد بيانات الموتر إلى Eigen::Tensor بنفس الحجم ولكن مع تحويل بتّي إلى نوع البيانات المحدد T

يُعدّ استخدام التحويل الثنائي مفيدًا لعمليات النقل والنسخ. ملاحظة: هذا يُشابه tensor() باستثناء السماح بالتحويل الثنائي.

bit_casted_tensor

TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const 

أعد بيانات الموتر إلى Eigen::Tensor بنفس الحجم ولكن مع تحويل بتّي إلى نوع البيانات المحدد T

يُعدّ استخدام التحويل الثنائي مفيدًا لعمليات النقل والنسخ. ملاحظة: هذا يُشابه tensor() باستثناء السماح بالتحويل الثنائي.

بيانات

void * data() const 

حجم الأبعاد

int64 dim_size(
  int d
) const 

أداة وصول ملائمة لشكل الموتر.

الأبعاد

int dims() const 

أداة وصول ملائمة لشكل الموتر.

للاطلاع على جميع طرق الوصول إلى الشكل، راجع التعليقات الخاصة بالطرق ذات الصلة في TensorShape في tensor_shape.h .

نوع البيانات

DataType dtype() const 

يُعيد نوع البيانات.

مستوي

TTypes< T >::Flat flat()

قم بإرجاع بيانات الموتر كـ Eigen::Tensor من نوع البيانات وشكل محدد.

تتيح لك هذه الطرق الوصول إلى البيانات بالأبعاد والأحجام التي تختارها. لا تحتاج إلى معرفة عدد أبعاد الموتر لاستدعائها. مع ذلك، فهي CHECK من تطابق النوع والأبعاد المطلوبة، وتُنشئ كائن Eigen::Tensor بنفس عدد عناصر الموتر.

مثال:

  
    typedef float T;
    Tensor my_ten(...built with Shape{planes: 4, rows: 3, cols: 5}...);
    // 1D Eigen::Tensor, size 60:
    auto flat = my_ten.flat();
    // 2D Eigen::Tensor 12 x 5:
    auto inner = my_ten.flat_inner_dims();
    // 2D Eigen::Tensor 4 x 15:
    auto outer = my_ten.shaped<T, 2>({4, 15});
    // CHECK fails, bad num elements:
    auto outer = my_ten.shaped<T, 2>({4, 8});
    // 3D Eigen::Tensor 6 x 5 x 2:
    auto weird = my_ten.shaped<T, 3>({6, 5, 2});
    // CHECK fails, type mismatch:
    auto bad   = my_ten.flat();

      

flat

TTypes< T >::ConstFlat flat() const 

الأبعاد الداخلية المسطحة

TTypes< T, NDIMS >::Tensor flat_inner_dims()

يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، مع دمج جميع أبعاد Tensor باستثناء NDIMS-1 الأخير في البعد الأول للنتيجة.

إذا كانت NDIMS > dims() فسيتم إضافة أبعاد رئيسية بحجم 1 لجعل رتبة الإخراج NDIMS.

الأبعاد الداخلية المسطحة

TTypes< T, NDIMS >::ConstTensor flat_inner_dims() const 

أبعاد داخلية وخارجية مسطحة

TTypes< T, NDIMS >::Tensor flat_inner_outer_dims(
  int64 begin
)

يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، حيث يقوم بطي أبعاد Tensor 'begin' الأولى إلى البعد الأول من النتيجة وأبعاد Tensor الأخيرة dims() - 'begin' - NDIMS إلى البعد الأخير من النتيجة.

إذا كانت قيمة 'begin' أقل من الصفر، فسيتم إضافة الأبعاد البادئة (|'begin'|) بحجم 1. أما إذا كانت قيمة 'begin' + NDIMS أكبر من dims() ، فسيتم إضافة الأبعاد اللاحقة ('begin' + NDIMS - dims()) بحجم 1.

أبعاد داخلية وخارجية مسطحة

TTypes< T, NDIMS >::ConstTensor flat_inner_outer_dims(
  int64 begin
) const 

الأبعاد الخارجية المسطحة

TTypes< T, NDIMS >::Tensor flat_outer_dims()

يقوم بإرجاع البيانات كـ Eigen::Tensor بأبعاد NDIMS، مع دمج جميع أبعاد Tensor باستثناء أول NDIMS-1 في البعد الأخير من النتيجة.

إذا كانت NDIMS > dims() فسيتم إضافة أبعاد لاحقة بحجم 1 لجعل رتبة الإخراج NDIMS.

الأبعاد الخارجية المسطحة

TTypes< T, NDIMS >::ConstTensor flat_outer_dims() const 

مصفوفة

TTypes< T >::Matrix matrix()

مصفوفة

TTypes< T >::ConstMatrix matrix() const 

عامل التشغيل =

Tensor & operator=(
  const Tensor & other
)

عامل التعيين. يتشارك هذا الموتر في مساحة التخزين الأساسية لموتر آخر.

عامل التشغيل =

Tensor & operator=(
  Tensor && other
)

عامل النقل. راجع مُنشئ النقل لمزيد من التفاصيل.

إعادة تفسير البعد الأخير

TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()

قم بإرجاع بيانات الموتر إلى Eigen::Tensor مع تحويل عناصر البعد الأخير إلى عناصر مفردة من نوع أكبر.

على سبيل المثال، يُفيد هذا في النوى التي تُعامل موترات NCHW_VECT_C من نوع int8 كموترات NCHW من نوع int32. يجب أن يساوي حجم (T) حجم نوع العنصر الأصلي مضروبًا في عدد العناصر في البُعد الأخير الأصلي. يجب أن يكون NDIMS أقل بواحد من عدد الأبعاد الأصلي.

إعادة تفسير البعد الأخير

TTypes< T, NDIMS >::ConstTensor reinterpret_last_dimension() const 

قم بإرجاع بيانات الموتر إلى Eigen::Tensor مع تحويل عناصر البعد الأخير إلى عناصر مفردة من نوع أكبر.

على سبيل المثال، يُفيد هذا في النوى التي تُعامل موترات NCHW_VECT_C من نوع int8 كموترات NCHW من نوع int32. يجب أن يساوي حجم (T) حجم نوع العنصر الأصلي مضروبًا في عدد العناصر في البُعد الأخير الأصلي. يجب أن يكون NDIMS أقل بواحد من عدد الأبعاد الأصلي.

كمية قياسية

TTypes< T >::Scalar scalar()

أعد بيانات الموتر TensorMap بحجم ثابت 1: TensorMap > .

يسمح استخدام scalar() للمترجم بإجراء التحسينات حيث يكون حجم الموتر معروفًا في وقت الترجمة.

كمية قياسية

TTypes< T >::ConstScalar scalar() const 

شكل

const TensorShape & shape() const 

يُعيد شكل الموتر.

شكل

TTypes< T, NDIMS >::Tensor shaped(
  gtl::ArraySlice< int64 > new_sizes
)

شكل

TTypes< T, NDIMS >::ConstTensor shaped(
  gtl::ArraySlice< int64 > new_sizes
) const 

الموتر

TTypes< T, NDIMS >::Tensor tensor()

الموتر

TTypes< T, NDIMS >::ConstTensor tensor() const 

بيانات الموتر

StringPiece tensor_data() const 

يُرجع StringPiece الذي يربط مخزن الموتر الحالي.

قد يشير StringPiece المُعاد إلى موقع ذاكرة على أجهزة لا يمكن لوحدة المعالجة المركزية الوصول إليه مباشرة.

ملاحظة: يتم حساب مراجع المخزن المؤقت للموتر الأساسي، لذا فإن عمر المحتويات التي تم تعيينها بواسطة StringPiece يتطابق مع عمر المخزن المؤقت؛ يجب على المستدعين التأكد من عدم تدمير المخزن المؤقت أثناء استخدام StringPiece .

يتطلب: DataTypeCanUseMemcpy(dtype()) .

unaligned_flat

TTypes< T >::UnalignedFlat unaligned_flat()

unaligned_flat

TTypes< T >::UnalignedConstFlat unaligned_flat() const 

غير متناسق الشكل

TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped(
  gtl::ArraySlice< int64 > new_sizes
)

غير متناسق الشكل

TTypes< T, NDIMS >::UnalignedConstTensor unaligned_shaped(
  gtl::ArraySlice< int64 > new_sizes
) const 

متجه

TTypes< T >::Vec vec()

قم بإرجاع بيانات الموتر كـ Eigen::Tensor بنوع وأحجام هذا الموتر.

استخدم هذه الطرق عندما تعرف نوع البيانات وعدد أبعاد الموتر، وتريد أن يكون حجم Eigen::Tensor تلقائيًا متناسبًا مع أحجام الموتر. يفشل فحص التنفيذ في حال عدم تطابق النوع أو الأحجام.

مثال:

  
    typedef float T;
    Tensor my_mat(...built with Shape{rows: 3, cols: 5}...);
    auto mat = my_mat.matrix();    // 2D Eigen::Tensor, 3 x 5.
    auto mat = my_mat.tensor<T, 2>(); // 2D Eigen::Tensor, 3 x 5.
    auto vec = my_mat.vec();       // CHECK fails as my_mat is 2D.
    auto vec = my_mat.tensor<T, 3>(); // CHECK fails as my_mat is 2D.
    auto mat = my_mat.matrix();// CHECK fails as type mismatch.

      

vec

TTypes< T >::ConstVec vec() const 

نسخ ثابتة من جميع الطرق المذكورة أعلاه.

~موتر

 ~Tensor()