جریان تنسور:: تانسور

#include <tensor.h>

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

خلاصه

سازندگان و ویرانگرها

Tensor ()
یک تانسور شناور یک بعدی و 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)
یک تانسور با نوع داده ورودی، شکل و 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)
تانسور دیگر را در این تانسور کپی کنید، آن را دوباره شکل دهید و نوع داده بافر را دوباره تفسیر کنید.
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
در صورت لزوم، آیا این تانسور مقداردهی اولیه شده است؟
IsSameSize (const Tensor & b) const
bool
NumElements () const
int64
لوازم جانبی مناسب برای شکل تانسور.
SharesBufferWith (const Tensor & b) const
bool
Slice (int64 dim0_start, int64 dim0_limit) const
این تانسور را در امتداد بعد 1 برش دهید.
SubSlice (int64 index) const
یک زیر اسلایس از این تانسور در امتداد بعد 1 انتخاب کنید.
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 برگردانید و به dtype T جدید منتقل کنید.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
داده های تانسور را به یک Eigen::Tensor با شکل جدید مشخص شده در new_sizes برگردانید و به dtype T جدید منتقل کنید.
bit_casted_tensor ()
TTypes< T, NDIMS >:: Tensor
داده‌های تانسور را به یک Eigen::Tensor با همان اندازه اما به صورت بیتی به dtype T مشخص شده برگردانید.
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
داده‌های تانسور را به یک Eigen::Tensor با همان اندازه اما به صورت بیتی به dtype 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 برمی‌گرداند، اولین ابعاد تانسور «شروع» را در اولین بعد نتیجه و ابعاد تانسور آخرین 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 با اندازه ثابت 1 برگردانید: 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
نسخه Const تمام روش های بالا.

توابع عمومی

AllocatedBytes

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(نوع)

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

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

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

  • DataTypeSize(other.dtype()) != 0
  • DataTypeSize(نوع) != 0

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

کپی از

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

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

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

DebugString

string DebugString(
  int num_values
) const 

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

DebugString

string DebugString() const 

DeviceSafeDebugString

string DeviceSafeDebugString() const 

FillDescription

void FillDescription(
  TensorDescription *description
) const 

پروتوی TensorDescription را با متادیتا درباره تانسور که برای نظارت و اشکال زدایی مفید است پر کنید.

FromProto

bool FromProto(
  const TensorProto & other
) TF_MUST_USE_RESULT

other تجزیه کنید و تانسور را بسازید.

در صورت موفقیت آمیز بودن تجزیه، true برمی گرداند. اگر تجزیه ناموفق باشد، وضعیت *this تغییر نمی کند.

FromProto

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

تنظیم شده است

bool IsAligned() const 

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

اولیه شده است

bool IsInitialized() const 

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

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

IsSameSize

bool IsSameSize(
  const Tensor & b
) const 

NumeElements

int64 NumElements() const 

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

SharesBufferWith

bool SharesBufferWith(
  const Tensor & b
) const 

برش

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

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

یعنی، تانسور برگشتی [i, ...] == این [dim0_start + i, ...] بازگشتی را برآورده می کند. تانسور برگشتی بافر تانسور زیرین را با این تانسور به اشتراک می گذارد.

توجه: بسته به شکل، تانسور برگشتی ممکن است همان نیاز ترازبندی این تانسور را برآورده نکند. تماس‌گیرنده باید تراز تانسور برگشتی را قبل از فراخوانی روش‌های خاصی که نیاز به هم‌ترازی دارند، بررسی کند (مثلاً flat() ، tensor() ).

توجه: هنگامی که با یک تانسور N بعدی تغذیه می شود، این روش یک تانسور را نیز با ابعاد N برمی گرداند. اگر می خواهید یک تانسور فرعی انتخاب کنید، SubSlice را ببینید.

REQUIRES: dims() >= 1 مورد نیاز: 0 <= dim0_start <= dim0_limit <= dim_size(0)

SubSlice

Tensor SubSlice(
  int64 index
) const 

یک زیر اسلایس از این تانسور در امتداد بعد 1 انتخاب کنید.

هنگامی که با یک تانسور N بعدی تغذیه می شود، این روش یک تانسور با ابعاد N-1 را برمی گرداند، که در آن تانسور برگشتی یک زیر برش از تانسور ورودی در امتداد بعد اول است. ابعاد N-1 تانسور برگشتی آخرین ابعاد N-1 تانسور ورودی است.

توجه: بسته به شکل، تانسور برگشتی ممکن است همان نیاز ترازبندی این تانسور را برآورده نکند. تماس‌گیرنده باید تراز تانسور برگشتی را قبل از فراخوانی روش‌های خاصی که نیاز به هم‌ترازی دارند، بررسی کند (مثلاً flat() ، tensor() ).

REQUIRES: dims() >= 1 مورد نیاز: 0 <= dim0_start < dim_size(0)

SummarizeValue

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

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

تانسور

 Tensor()

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

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

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

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

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

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

تانسور

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

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

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

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

تانسور

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

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

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

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

تانسور

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

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

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

تانسور

 Tensor(
  DataType type
)

یک تانسور خالی از نوع داده داده شده ایجاد می کند.

مانند Tensor() یک Tensor یک بعدی و 0 عنصری با 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
)

سازنده را حرکت دهید.

پس از این تماس، به طور ایمن تخریب پذیر است و می توان به آن اختصاص داد، اما دیگر فراخوانی ها روی آن (مثلاً دستکاری شکل) معتبر نیستند.

TotalBytes

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 برگردانید و به dtype T جدید منتقل کنید.

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

bit_casted_shaped

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

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

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

bit_casted_tensor

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

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

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

bit_casted_tensor

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

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

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

dim_size

int64 dim_size(
  int d
) const 

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

کم نور می کند

int dims() const 

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

برای همه ابزارهای دسترسی به شکل، نظرات مربوط به روش‌های مرتبط TensorShape را در tensor_shape.h ببینید.

dtype

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 

flat_inner_dims

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

داده‌ها را به‌عنوان یک Eigen::Tensor با ابعاد NDIMS برمی‌گرداند، و همه ابعاد Tensor به جز آخرین NDIMS-1 را در بعد اول نتیجه جمع می‌کند.

اگر NDIMS > dims() سپس ابعاد اصلی اندازه 1 برای ایجاد رتبه خروجی NDIMS اضافه می شود.

flat_inner_dims

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

flat_inner_outer_dims

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

داده‌ها را به‌عنوان یک Eigen::Tensor با ابعاد NDIMS برمی‌گرداند، اولین ابعاد تانسور «شروع» را در اولین بعد نتیجه و ابعاد تانسور آخرین dims() - 'begin' - NDIMS را در آخرین بعد از نتیجه جمع می‌کند. نتیجه

اگر 'begin' < 0، سپس |'begin'| ابعاد اصلی سایز 1 اضافه خواهد شد. اگر 'begin' + NDIMS > dims() سپس 'begin' + NDIMS - dims() ابعاد انتهایی اندازه 1 اضافه می شود.

flat_inner_outer_dims

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

flat_outer_dims

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

داده‌ها را به‌عنوان یک Eigen::Tensor با ابعاد NDIMS برمی‌گرداند و همه ابعاد Tensor به جز اولین NDIMS-1 را در آخرین بعد نتیجه جمع می‌کند.

اگر NDIMS > dims() سپس ابعاد انتهایی اندازه 1 برای ایجاد رتبه خروجی NDIMS اضافه می شود.

flat_outer_dims

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
)

انتقال اپراتور برای جزئیات بیشتر به سازنده حرکت مراجعه کنید.

reinterpret_last_dimension

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

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

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

reinterpret_last_dimension

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

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

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

اسکالر

TTypes< T >::Scalar scalar()

داده های Tensor را به عنوان یک TensorMap با اندازه ثابت 1 برگردانید: 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 نمی تواند مستقیماً آنها را آدرس دهد.

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

به: DataTypeCanUseMemcpy(dtype()) نیاز دارد.

unaligned_flat

TTypes< T >::UnalignedFlat unaligned_flat()

unaligned_flat

TTypes< T >::UnalignedConstFlat unaligned_flat() const 

unaligned_shaped

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

unaligned_shaped

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

vec

TTypes< T >::Vec vec()

داده های تانسور را به عنوان Eigen::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 

نسخه Const تمام روش های بالا.

~تنسور

 ~Tensor()