tensorflow:: تنسور

#include <tensor.h>

یک آرایه n بعدی از مقادیر را نشان می‌دهد.

خلاصه

سازنده‌ها و مخرب‌ها

Tensor ()
یک تانسور اعشاری تک‌بعدی با صفر عنصر ایجاد می‌کند.
Tensor (DataType type, const TensorShape & shape)
یک تانسور از type و shape داده شده ایجاد می‌کند.
Tensor (Allocator *a, DataType type, const TensorShape & shape)
با استفاده از تخصیص‌دهنده a برای تخصیص بافر زیرین، یک تانسور با type و shape ورودی ایجاد می‌کند.
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr)
با استفاده از تخصیص‌دهنده a و "allocation_attr" مشخص شده برای تخصیص بافر اصلی، یک تانسور با type و shape ورودی ایجاد می‌کند.
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf)
یک تانسور با نوع داده ورودی، شکل و buf ایجاد می‌کند.
Tensor (DataType type)
یک 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)
سازنده را جابجا کنید.
~Tensor ()

کارکردهای عمومی

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
با محتوای *this تانسور، proto را پر می‌کند.
AsProtoTensorContent (TensorProto *proto) const
void
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape)
تانسور دیگر را در این تانسور کپی کنید، آن را تغییر شکل دهید و نوع داده بافر را دوباره تفسیر کنید.
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
اگر این تانسور هم‌تراز شده باشد، مقدار true را برمی‌گرداند.
IsInitialized () const
bool
در صورت لزوم، آیا این Tensor مقداردهی اولیه شده است؟
IsSameSize (const Tensor & b) const
bool
NumElements () const
int64
لوازم جانبی راحتی برای شکل تانسور.
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
داده‌های تانسور را با شکل جدید مشخص شده در new_sizes به یک Eigen::Tensor برگردانید و به یک dtype جدید T تبدیل کنید.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
داده‌های تانسور را با شکل جدید مشخص شده در new_sizes به یک Eigen::Tensor برگردانید و به یک dtype جدید T تبدیل کنید.
bit_casted_tensor ()
TTypes< T, NDIMS >:: Tensor
داده‌های تانسور را به یک Eigen::Tensor با اندازه یکسان اما تبدیل بیتی به نوع داده مشخص شده T برگردانید.
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
داده‌های تانسور را به یک Eigen::Tensor با اندازه یکسان اما تبدیل بیتی به نوع داده مشخص شده T برگردانید.
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
داده‌های Tensor را به عنوان یک TensorMap با اندازه ثابت ۱ برمی‌گرداند: 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 

با محتوای *this تانسور، proto را پر می‌کند.

AsProtoField() فیلد تکراری تابع proto.dtype() را پر می‌کند، در حالی که AsProtoTensorContent() محتوای موجود در proto.tensor_content() را به صورت فشرده کدگذاری می‌کند.

AsProtoTensorContent

void AsProtoTensorContent(
  TensorProto *proto
) const 

بیت‌کست از

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

تانسور دیگر را در این تانسور کپی کنید، آن را تغییر شکل دهید و نوع داده بافر را دوباره تفسیر کنید.

اگر Status::OK() برگردانده شود، دو تانسور اکنون فضای ذخیره‌سازی زیربنایی یکسانی را به اشتراک می‌گذارند.

این فراخوانی مستلزم آن است که تانسور other و نوع و شکل داده شده «سازگار» باشند (یعنی تعداد بایت‌های یکسانی را اشغال کنند).

به طور خاص:

shape.num_elements() * نوع دادهاندازه(نوع)

باید برابر باشد

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

علاوه بر این، این تابع نیاز دارد:

  • نوع دادهاندازه(other.dtype()) != 0
  • نوع دادهاندازه(نوع) != 0

اگر هر یک از الزامات برآورده نشود، error::InvalidArgument برگردانده می‌شود.

کپی از

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

تانسور دیگر را در این تانسور کپی کنید و آن را تغییر شکل دهید.

این تانسور فضای ذخیره‌سازی زیربنایی دیگری را به اشتراک می‌گذارد. اگر other.shape() تعداد عناصر یکسانی از shape داده شده داشته باشد، true را برمی‌گرداند.

رشته اشکال‌زدایی

string DebugString(
  int num_values
) const 

خلاصه‌ای از تانسور که برای انسان قابل خواندن باشد و برای اشکال‌زدایی مناسب باشد.

رشته اشکال‌زدایی

string DebugString() const 

رشته اشکال‌زدایی ایمن دستگاه

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 

اگر این تانسور هم‌تراز شده باشد، مقدار true را برمی‌گرداند.

مقداردهی اولیه شده است

bool IsInitialized() const 

در صورت لزوم، آیا این Tensor مقداردهی اولیه شده است؟

تنسورهای با عنصر صفر همیشه مقداردهی اولیه شده در نظر گرفته می‌شوند، حتی اگر هرگز به آنها مقداردهی نشده باشد و هیچ حافظه‌ای به آنها اختصاص داده نشده باشد.

اندازه یکسان

bool IsSameSize(
  const Tensor & b
) const 

عناصر عددی

int64 NumElements() const 

لوازم جانبی راحتی برای شکل تانسور.

SharesBufferWith

bool SharesBufferWith(
  const Tensor & b
) const 

برش

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

این تانسور را در امتداد بعد اول برش دهید.

یعنی، تانسور برگشتی، return[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 <= dim0_start < dim_size(0)

خلاصه ارزش

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

اولین مقادیر max_entries در *this را به یک رشته تبدیل کن.

تانسور

 Tensor()

یک تانسور اعشاری تک‌بعدی با صفر عنصر ایجاد می‌کند.

تانسور برگشتی یک اسکالر (شکل {}) نیست، بلکه یک تانسور تک‌بعدی خالی است (شکل {0}، NumElements() == 0). از آنجایی که هیچ عنصری ندارد، نیازی به اختصاص مقدار ندارد و به طور پیش‌فرض مقداردهی اولیه می‌شود ( IsInitialized() برابر با true است). اگر این مورد نامطلوب است، ایجاد یک اسکالر تک‌عنصری را در نظر بگیرید که نیاز به مقداردهی اولیه دارد:

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

یک تانسور از type و shape داده شده ایجاد می‌کند.

اگر LogMemory::IsEnabled()‎ باشد، تخصیص به عنوان یک هسته و مرحله ناشناخته ثبت می‌شود. فراخوانی سازنده Tensor به طور مستقیم از درون یک Op منسوخ شده است: از متدهای OpKernelConstruction/OpKernelContext assign_* برای تخصیص یک تانسور جدید استفاده کنید که هسته و مرحله را ثبت می‌کند.

بافر اصلی با استفاده از یک CPUAllocator تخصیص داده می‌شود.

تانسور

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

با استفاده از تخصیص‌دهنده a برای تخصیص بافر زیرین، یک تانسور با type و shape ورودی ایجاد می‌کند.

اگر LogMemory::IsEnabled()‎ باشد، تخصیص به عنوان یک هسته و مرحله ناشناخته ثبت می‌شود. فراخوانی سازنده Tensor به طور مستقیم از درون یک Op منسوخ شده است: از متدهای OpKernelConstruction/OpKernelContext assign_* برای تخصیص یک تانسور جدید استفاده کنید که هسته و مرحله را ثبت می‌کند.

a بیشتر از عمر این تانسور عمر کند.

تانسور

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

با استفاده از تخصیص‌دهنده a و "allocation_attr" مشخص شده برای تخصیص بافر زیرین، یک تانسور با type و shape ورودی ایجاد می‌کند.

اگر هسته و مرحله شناخته شده باشند، allocation_attr.allocation_will_be_logged باید روی true تنظیم شود و LogMemory::RecordTensorAllocation باید پس از ساخت تانسور فراخوانی شود. فراخوانی سازنده Tensor به طور مستقیم از درون یک Op منسوخ شده است: از متدهای OpKernelConstruction/OpKernelContext allocation_* برای تخصیص یک تانسور جدید استفاده کنید که هسته و مرحله را ثبت می‌کند.

a بیشتر از عمر این تانسور عمر کند.

تانسور

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

یک تانسور با نوع داده ورودی، شکل و buf ایجاد می‌کند.

یک مرجع روی buf که متعلق به این Tensor است، به دست می‌آورد.

تانسور

 Tensor(
  DataType type
)

یک Tensor خالی از نوع داده داده شده ایجاد می‌کند.

مانند Tensor() ، یک 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 استفاده کنید و Status برگردانده شده را بررسی کنید.

بیت_قالب_گرفته

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

داده‌های تانسور را با شکل جدید مشخص شده در new_sizes به یک Eigen::Tensor برگردانید و به یک dtype جدید T تبدیل کنید.

استفاده از bitcast برای عملیات جابجایی و کپی مفید است. تنها تفاوت bitcast مجاز با shaped() این است.

بیت_قالب_گرفته

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

داده‌های تانسور را با شکل جدید مشخص شده در new_sizes به یک Eigen::Tensor برگردانید و به یک dtype جدید T تبدیل کنید.

استفاده از bitcast برای عملیات جابجایی و کپی مفید است. تنها تفاوت bitcast مجاز با shaped() این است.

تانسور_بیت_ریخته_شده

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

داده‌های تانسور را به یک Eigen::Tensor با اندازه یکسان اما تبدیل بیتی به نوع داده مشخص شده T برگردانید.

استفاده از bitcast برای عملیات جابجایی و کپی مفید است. توجه: این همان tensor() است، با این تفاوت که bitcast مجاز است.

تانسور_بیت_ریخته_شده

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

داده‌های تانسور را به یک Eigen::Tensor با اندازه یکسان اما تبدیل بیتی به نوع داده مشخص شده T برگردانید.

استفاده از bitcast برای عملیات جابجایی و کپی مفید است. توجه: این همان tensor() است، با این تفاوت که bitcast مجاز است.

اندازه_کم

int64 dim_size(
  int d
) const 

لوازم جانبی راحتی برای شکل تانسور.

دیم ها

int dims() const 

لوازم جانبی راحتی برای شکل تانسور.

برای همهٔ ابزارهای دسترسی به شکل، به توضیحات مربوط به متدهای مربوط به TensorShape در tensor_shape.h مراجعه کنید.

نوع دی

DataType dtype() const 

نوع داده را برمی‌گرداند.

مسطح

TTypes< T >::Flat flat()

داده‌های تانسور را به عنوان یک Eigen::Tensor از نوع داده و یک شکل مشخص شده برگردانید.

این متدها به شما امکان می‌دهند به داده‌ها با ابعاد و اندازه‌های دلخواه خود دسترسی داشته باشید. برای فراخوانی آنها نیازی به دانستن تعداد ابعاد Tensor ندارید. با این حال، آنها CHECK که نوع مطابقت داشته باشد و ابعاد درخواستی یک Eigen::Tensor با همان تعداد عناصر 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() باشد، ابعاد اولیه با اندازه ۱ اضافه می‌شوند تا خروجی رتبه 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' < 0 باشد، آنگاه ابعاد اولیه |'begin'| با اندازه ۱ اضافه می‌شوند. اگر 'begin' + NDIMS > dims() باشد، آنگاه 'begin' + NDIMS - dims() ابعاد انتهایی با اندازه ۱ اضافه می‌شوند.

ابعاد داخلی_بیرونی مسطح

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() باشد ، ابعاد انتهایی با اندازه ۱ اضافه می‌شوند تا خروجی رتبه 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 برگردانید که در آن عناصر آخرین بُعد به عناصر منفرد از نوع بزرگ‌تر تبدیل شده‌اند.

برای مثال، این برای هسته‌هایی مفید است که می‌توانند با تانسورهای int8 از نوع NCHW_VECT_C به عنوان تانسورهای int32 از نوع NCHW رفتار کنند. sizeof(T) باید برابر با اندازه عنصر اصلی از نوع * تعداد عناصر در آخرین بعد اصلی باشد. NDIMS باید ۱ واحد کمتر از تعداد ابعاد اصلی باشد.

تفسیر مجدد آخرین بُعد

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

داده‌های تانسور را به یک Eigen::Tensor برگردانید که در آن عناصر آخرین بُعد به عناصر منفرد از نوع بزرگ‌تر تبدیل شده‌اند.

برای مثال، این برای هسته‌هایی مفید است که می‌توانند با تانسورهای int8 از نوع NCHW_VECT_C به عنوان تانسورهای int32 از نوع NCHW رفتار کنند. sizeof(T) باید برابر با اندازه عنصر اصلی از نوع * تعداد عناصر در آخرین بعد اصلی باشد. NDIMS باید ۱ واحد کمتر از تعداد ابعاد اصلی باشد.

اسکالر

TTypes< T >::Scalar scalar()

داده‌های Tensor را به عنوان یک TensorMap با اندازه ثابت ۱ برمی‌گرداند: 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 

tensor_data

StringPiece tensor_data() const 

یک StringPiece را برمی‌گرداند که بافر تانسور فعلی را نگاشت می‌کند.

StringPiece برگردانده شده ممکن است به مکانی از حافظه در دستگاه‌هایی اشاره کند که CPU نمی‌تواند مستقیماً به آنها آدرس‌دهی کند.

نکته: بافر تانسور زیرین refcount می‌شود، بنابراین طول عمر محتویات نگاشت شده توسط StringPiece با طول عمر بافر مطابقت دارد؛ فراخوانی‌کنندگان باید ترتیبی دهند تا مطمئن شوند که بافر در حالی که StringPiece هنوز استفاده می‌شود، از بین نمی‌رود.

مورد نیاز: DataTypeCanUseMemcpy(dtype()) .

مسطح_غیرهم‌تراز

TTypes< T >::UnalignedFlat 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 با نوع و اندازه‌های این Tensor برگردانید.

از این روش‌ها زمانی استفاده کنید که نوع داده و تعداد ابعاد Tensor را می‌دانید و می‌خواهید Eigen::Tensor به طور خودکار با اندازه‌های 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()