tensorflow:: Tensor

#include <tensor.h>

Biểu diễn một mảng giá trị n chiều.

Bản tóm tắt

Hàm khởi tạo và hàm hủy

Tensor ()
Tạo một tensor float một chiều, không có phần tử nào.
Tensor (DataType type, const TensorShape & shape)
Tạo một Tensor có type và shape đã cho.
Tensor (Allocator *a, DataType type, const TensorShape & shape)
Tạo một tensor với type dữ liệu và shape đầu vào, sử dụng bộ cấp phát a để cấp phát bộ đệm cơ bản.
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr)
Tạo một tensor với type và shape đầu vào, sử dụng bộ cấp phát a và thuộc tính `allocation_attr` được chỉ định để cấp phát bộ đệm cơ bản.
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf)
Tạo một tensor với kiểu dữ liệu đầu vào, hình dạng và bộ đệm.
Tensor (DataType type)
Tạo một Tensor rỗng với kiểu dữ liệu đã cho.
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)
Hàm tạo sao chép.
Tensor ( Tensor && other)
Hàm tạo di chuyển.
~Tensor ()

Chức năng công cộng

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
Điền vào proto nội dung của tensor *this .
AsProtoTensorContent (TensorProto *proto) const
void
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape)
Sao chép tensor kia vào tensor này, định hình lại nó và diễn giải lại kiểu dữ liệu của buffer.
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT
bool
Sao chép tensor kia vào tensor này và định hình lại nó.
DebugString (int num_values) const
string
Bản tóm tắt dễ hiểu dành cho người dùng về tensor, thích hợp cho việc gỡ lỗi.
DebugString () const
string
DeviceSafeDebugString () const
string
FillDescription (TensorDescription *description) const
void
Hãy điền thông tin siêu dữ liệu về tensor vào proto TensorDescription , những thông tin này hữu ích cho việc giám sát và gỡ lỗi.
FromProto (const TensorProto & other) TF_MUST_USE_RESULT
bool
Phân tích other và xây dựng tensor.
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT
bool
IsAligned () const
bool
Trả về true nếu tensor này được căn chỉnh.
IsInitialized () const
bool
Nếu cần, Tensor này đã được khởi tạo chưa?
IsSameSize (const Tensor & b) const
bool
NumElements () const
int64
Công cụ truy cập tiện ích cho hình dạng tensor.
SharesBufferWith (const Tensor & b) const
bool
Slice (int64 dim0_start, int64 dim0_limit) const
Cắt tensor này theo chiều thứ nhất.
SubSlice (int64 index) const
Chọn một lát cắt con từ tensor này dọc theo chiều thứ nhất.
SummarizeValue (int64 max_entries, bool print_v2) const
string
Chuyển đổi các giá trị max_entries đầu tiên trong *this thành chuỗi.
TotalBytes () const
size_t
Trả về ước tính mức sử dụng bộ nhớ của tensor này.
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape)
void
Tương tự như BitcastFrom, nhưng CHECK sẽ thất bại nếu bất kỳ điều kiện tiên quyết nào không được đáp ứng.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu tensor cho một Eigen::Tensor với hình dạng mới được chỉ định trong new_sizes và ép kiểu sang kiểu dữ liệu mới T
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
Trả về dữ liệu tensor cho một Eigen::Tensor với hình dạng mới được chỉ định trong new_sizes và ép kiểu sang kiểu dữ liệu mới T
bit_casted_tensor ()
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu tensor cho một Eigen::Tensor có cùng kích thước nhưng được ép kiểu bitwise sang kiểu dữ liệu T đã chỉ định.
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
Trả về dữ liệu tensor cho một Eigen::Tensor có cùng kích thước nhưng được ép kiểu bitwise sang kiểu dữ liệu T đã chỉ định.
dim_size (int d) const
int64
Công cụ truy cập tiện ích cho hình dạng tensor.
dims () const
int
Công cụ truy cập tiện ích cho hình dạng tensor.
dtype () const
DataType
Trả về kiểu dữ liệu.
flat ()
TTypes< T >::Flat
Trả về dữ liệu tensor dưới dạng Eigen::Tensor với kiểu dữ liệu và hình dạng được chỉ định.
flat () const
TTypes< T >::ConstFlat
flat_inner_dims ()
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn tất cả các kích thước Tensor ngoại trừ NDIMS-1 cuối cùng vào kích thước đầu tiên của kết quả.
flat_inner_dims () const
TTypes< T, NDIMS >::ConstTensor
flat_inner_outer_dims (int64 begin)
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn kích thước Tensor 'begin' đầu tiên vào kích thước đầu tiên của kết quả và kích thước Tensor của dims() - 'begin' - NDIMS cuối cùng vào kích thước cuối cùng của kết quả.
flat_inner_outer_dims (int64 begin) const
TTypes< T, NDIMS >::ConstTensor
flat_outer_dims ()
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn tất cả các kích thước Tensor ngoại trừ NDIMS-1 đầu tiên vào kích thước cuối cùng của kết quả.
flat_outer_dims () const
TTypes< T, NDIMS >::ConstTensor
matrix ()
TTypes< T >::Matrix
matrix () const
TTypes< T >::ConstMatrix
operator= (const Tensor & other)
Gán toán tử. Tensor này chia sẻ bộ nhớ lưu trữ cơ bản với các tensor khác.
operator= ( Tensor && other)
Toán tử di chuyển. Xem hàm tạo di chuyển để biết thêm chi tiết.
reinterpret_last_dimension ()
TTypes< T, NDIMS >:: Tensor
Trả về dữ liệu tensor cho một Eigen::Tensor với các phần tử chiều cuối cùng được chuyển đổi thành các phần tử đơn lẻ có kiểu dữ liệu lớn hơn.
reinterpret_last_dimension () const
TTypes< T, NDIMS >::ConstTensor
Trả về dữ liệu tensor cho một Eigen::Tensor với các phần tử chiều cuối cùng được chuyển đổi thành các phần tử đơn lẻ có kiểu dữ liệu lớn hơn.
scalar ()
TTypes< T >::Scalar
Trả về dữ liệu Tensor dưới dạng TensorMap có kích thước cố định là 1: TensorMap > .
scalar () const
TTypes< T >::ConstScalar
shape () const
const TensorShape &
Trả về hình dạng của tensor.
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
Trả về một StringPiece ánh xạ đến bộ đệm của tensor hiện tại.
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
Trả về dữ liệu tensor dưới dạng Eigen::Tensor với kiểu dữ liệu và kích thước của Tensor này.
vec () const
TTypes< T >::ConstVec
Các phiên bản hằng số của tất cả các phương thức trên.

Chức năng công cộng

Số byte được phân bổ

size_t AllocatedBytes() const 

AsProtoField

void AsProtoField(
  TensorProto *proto
) const 

Điền vào proto nội dung của tensor *this .

AsProtoField() điền vào trường lặp lại cho proto.dtype() , trong khi AsProtoTensorContent() mã hóa nội dung trong proto.tensor_content() dưới dạng gọn.

AsProtoTensorContent

void AsProtoTensorContent(
  TensorProto *proto
) const 

BitcastFrom

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

Sao chép tensor kia vào tensor này, định hình lại nó và diễn giải lại kiểu dữ liệu của buffer.

Nếu Status::OK() được trả về, hai tensor lúc này sẽ dùng chung một bộ nhớ lưu trữ.

Lệnh gọi này yêu cầu tensor other và kiểu dữ liệu cũng như hình dạng được cung cấp phải "tương thích" (tức là chúng chiếm cùng số byte).

Cụ thể:

shape.num_elements() * DataTypeSize(type)

phải bằng

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

Ngoài ra, chức năng này yêu cầu:

  • DataTypeSize(other.dtype()) != 0
  • DataTypeSize(type) != 0

Nếu bất kỳ yêu cầu nào không được đáp ứng, hàm sẽ trả về lỗi::InvalidArgument.

Sao chép từ

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

Sao chép tensor kia vào tensor này và định hình lại nó.

Tensor này chia sẻ bộ nhớ cơ bản với tensor khác. Trả về true nếu và chỉ nếu other.shape() có cùng số phần tử với shape đã cho.

Chuỗi gỡ lỗi

string DebugString(
  int num_values
) const 

Bản tóm tắt dễ hiểu dành cho người dùng về tensor, thích hợp cho việc gỡ lỗi.

Chuỗi gỡ lỗi

string DebugString() const 

Chuỗi gỡ lỗi an toàn thiết bị

string DeviceSafeDebugString() const 

Điền mô tả

void FillDescription(
  TensorDescription *description
) const 

Hãy điền thông tin siêu dữ liệu về tensor vào proto TensorDescription , những thông tin này hữu ích cho việc giám sát và gỡ lỗi.

Từ Proto

bool FromProto(
  const TensorProto & other
) TF_MUST_USE_RESULT

Phân tích other và xây dựng tensor.

Trả về true nếu quá trình phân tích cú pháp thành công. Nếu quá trình phân tích cú pháp thất bại, trạng thái của *this không thay đổi.

Từ Proto

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

IsAligned

bool IsAligned() const 

Trả về true nếu tensor này được căn chỉnh.

Đã được khởi tạo

bool IsInitialized() const 

Nếu cần, Tensor này đã được khởi tạo chưa?

Các Tensor không có phần tử nào luôn được coi là đã được khởi tạo, ngay cả khi chúng chưa bao giờ được gán giá trị và không được cấp phát bất kỳ bộ nhớ nào.

Cùng kích thước

bool IsSameSize(
  const Tensor & b
) const 

NumElements

int64 NumElements() const 

Công cụ truy cập tiện ích cho hình dạng tensor.

SharesBufferWith

bool SharesBufferWith(
  const Tensor & b
) const 

Lát cắt

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

Cắt tensor này theo chiều thứ nhất.

Tức là, tensor được trả về thỏa mãn returned[i, ...] == this[dim0_start + i, ...]. Tensor được trả về chia sẻ bộ đệm tensor cơ bản với tensor này.

LƯU Ý: Tensor trả về có thể không đáp ứng yêu cầu căn chỉnh giống như tensor này tùy thuộc vào hình dạng của nó. Người gọi phải kiểm tra sự căn chỉnh của tensor trả về trước khi gọi một số phương thức có yêu cầu căn chỉnh (ví dụ: flat() , tensor() ).

LƯU Ý: Khi được cung cấp một tensor N chiều, phương thức này sẽ trả về một tensor cũng có N chiều. Nếu bạn muốn chọn một tensor con, hãy xem SubSlice.

YÊU CẦU: dims() >= 1 YÊU CẦU: 0 <= dim0_start <= dim0_limit <= dim_size(0)

SubSlice

Tensor SubSlice(
  int64 index
) const 

Chọn một lát cắt con từ tensor này dọc theo chiều thứ nhất.

Khi được cung cấp một tensor N chiều, phương thức này trả về một tensor có N-1 chiều, trong đó tensor trả về là một lát cắt của tensor đầu vào dọc theo chiều thứ nhất. N-1 chiều của tensor trả về là N-1 chiều cuối cùng của tensor đầu vào.

LƯU Ý: Tensor trả về có thể không đáp ứng yêu cầu căn chỉnh giống như tensor này tùy thuộc vào hình dạng của nó. Người gọi phải kiểm tra sự căn chỉnh của tensor trả về trước khi gọi một số phương thức có yêu cầu căn chỉnh (ví dụ: flat() , tensor() ).

YÊU CẦU: dims() >= 1 YÊU CẦU: 0 <= dim0_start < dim_size(0)

Tóm tắt giá trị

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

Chuyển đổi các giá trị max_entries đầu tiên trong *this thành chuỗi.

Tensor

 Tensor()

Tạo một tensor float một chiều, không có phần tử nào.

Tensor trả về không phải là một giá trị vô hướng (hình dạng {}), mà là một Tensor một chiều rỗng (hình dạng {0}, NumElements() == 0). Vì nó không có phần tử nào, nên nó không cần được gán giá trị và được khởi tạo mặc định ( IsInitialized() là true). Nếu điều này không mong muốn, hãy xem xét tạo một giá trị vô hướng một phần tử cần được khởi tạo:

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

Tạo một Tensor có type và shape đã cho.

Nếu LogMemory::IsEnabled() được sử dụng, việc cấp phát bộ nhớ sẽ được ghi lại là đến từ một kernel và bước không xác định. Việc gọi trực tiếp hàm tạo Tensor từ bên trong một Op đã lỗi thời: hãy sử dụng các phương thức allocate_* của OpKernelConstruction/OpKernelContext để cấp phát một tensor mới, các phương thức này sẽ ghi lại kernel và bước.

Bộ đệm cơ bản được cấp phát bằng cách sử dụng CPUAllocator .

Tensor

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

Tạo một tensor với type dữ liệu và shape đầu vào, sử dụng bộ cấp phát a để cấp phát bộ đệm cơ bản.

Nếu LogMemory::IsEnabled() được sử dụng, việc cấp phát bộ nhớ sẽ được ghi lại là đến từ một kernel và bước không xác định. Việc gọi trực tiếp hàm tạo Tensor từ bên trong một Op đã lỗi thời: hãy sử dụng các phương thức allocate_* của OpKernelConstruction/OpKernelContext để cấp phát một tensor mới, các phương thức này sẽ ghi lại kernel và bước.

a phải tồn tại lâu hơn tuổi thọ của Tensor này.

Tensor

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

Tạo một tensor với type và shape đầu vào, sử dụng bộ cấp phát a và thuộc tính `allocation_attr` được chỉ định để cấp phát bộ đệm cơ bản.

Nếu biết kernel và step, thì nên đặt allocation_attr.allocation_will_be_logged thành true và gọi LogMemory::RecordTensorAllocation sau khi tensor được tạo. Việc gọi trực tiếp hàm tạo Tensor từ bên trong một Op đã lỗi thời: hãy sử dụng các phương thức allocate_* của OpKernelConstruction/OpKernelContext để cấp phát một tensor mới, ghi lại kernel và step.

a phải tồn tại lâu hơn tuổi thọ của Tensor này.

Tensor

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

Tạo một tensor với kiểu dữ liệu đầu vào, hình dạng và bộ đệm.

Lấy tham chiếu đến `buf` thuộc về Tensor này.

Tensor

 Tensor(
  DataType type
)

Tạo một Tensor rỗng với kiểu dữ liệu đã cho.

Tương tự như Tensor() , phương thức này trả về một Tensor 1 chiều, 0 phần tử với phương thức IsInitialized() trả về True. Xem tài liệu về Tensor() để biết thêm chi tiết.

Tensor

 Tensor(
  float scalar_value
)

Tensor

 Tensor(
  double scalar_value
)

Tensor

 Tensor(
  int32 scalar_value
)

Tensor

 Tensor(
  uint32 scalar_value
)

Tensor

 Tensor(
  uint16 scalar_value
)

Tensor

 Tensor(
  uint8 scalar_value
)

Tensor

 Tensor(
  int16 scalar_value
)

Tensor

 Tensor(
  int8 scalar_value
)

Tensor

 Tensor(
  tstring scalar_value
)

Tensor

 Tensor(
  complex64 scalar_value
)

Tensor

 Tensor(
  complex128 scalar_value
)

Tensor

 Tensor(
  int64 scalar_value
)

Tensor

 Tensor(
  uint64 scalar_value
)

Tensor

 Tensor(
  bool scalar_value
)

Tensor

 Tensor(
  qint8 scalar_value
)

Tensor

 Tensor(
  quint8 scalar_value
)

Tensor

 Tensor(
  qint16 scalar_value
)

Tensor

 Tensor(
  quint16 scalar_value
)

Tensor

 Tensor(
  qint32 scalar_value
)

Tensor

 Tensor(
  bfloat16 scalar_value
)

Tensor

 Tensor(
  Eigen::half scalar_value
)

Tensor

 Tensor(
  ResourceHandle scalar_value
)

Tensor

 Tensor(
  const char *scalar_value
)

Tensor

 Tensor(
  const Tensor & other
)

Hàm tạo sao chép.

Tensor

 Tensor(
  Tensor && other
)

Hàm tạo di chuyển.

Sau cuộc gọi này, Đối tượng này có thể bị phá hủy một cách an toàn và có thể được gán giá trị, nhưng các lệnh gọi khác trên nó (ví dụ: thao tác hình dạng) thì không hợp lệ.

Tổng số byte

size_t TotalBytes() const 

Trả về ước tính mức sử dụng bộ nhớ của tensor này.

UnsafeCopyFromInternal

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

Tương tự như BitcastFrom, nhưng CHECK sẽ thất bại nếu bất kỳ điều kiện tiên quyết nào không được đáp ứng.

Phương thức này đã lỗi thời. Thay vào đó, hãy sử dụng BitcastFrom và kiểm tra trạng thái trả về.

bit_casted_shaped

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

Trả về dữ liệu tensor cho một Eigen::Tensor với hình dạng mới được chỉ định trong new_sizes và ép kiểu sang kiểu dữ liệu mới T

Việc sử dụng bitcast rất hữu ích cho các thao tác di chuyển và sao chép. Bitcast được cho phép là điểm khác biệt duy nhất so với shaped() .

bit_casted_shaped

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

Trả về dữ liệu tensor cho một Eigen::Tensor với hình dạng mới được chỉ định trong new_sizes và ép kiểu sang kiểu dữ liệu mới T

Việc sử dụng bitcast rất hữu ích cho các thao tác di chuyển và sao chép. Bitcast được cho phép là điểm khác biệt duy nhất so với shaped() .

bit_casted_tensor

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

Trả về dữ liệu tensor cho một Eigen::Tensor có cùng kích thước nhưng được ép kiểu bitwise sang kiểu dữ liệu T đã chỉ định.

Việc sử dụng bitcast rất hữu ích cho các thao tác di chuyển và sao chép. LƯU Ý: điều này tương tự như tensor() ngoại trừ việc cho phép sử dụng bitcast.

bit_casted_tensor

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

Trả về dữ liệu tensor cho một Eigen::Tensor có cùng kích thước nhưng được ép kiểu bitwise sang kiểu dữ liệu T đã chỉ định.

Việc sử dụng bitcast rất hữu ích cho các thao tác di chuyển và sao chép. LƯU Ý: điều này tương tự như tensor() ngoại trừ việc cho phép sử dụng bitcast.

kích thước

int64 dim_size(
  int d
) const 

Công cụ truy cập tiện ích cho hình dạng tensor.

độ sáng

int dims() const 

Công cụ truy cập tiện ích cho hình dạng tensor.

Để biết tất cả các phương thức truy cập hình dạng, hãy xem phần chú thích cho các phương thức liên quan của TensorShape trong tensor_shape.h .

kiểu dữ liệu

DataType dtype() const 

Trả về kiểu dữ liệu.

phẳng

TTypes< T >::Flat flat()

Trả về dữ liệu tensor dưới dạng Eigen::Tensor với kiểu dữ liệu và hình dạng được chỉ định.

Các phương pháp này cho phép bạn truy cập dữ liệu với kích thước và số chiều tùy chọn. Bạn không cần biết số chiều của Tensor để gọi chúng. Tuy nhiên, chúng CHECK xem kiểu dữ liệu có khớp và kích thước được yêu cầu hay không, tạo ra một Eigen::Tensor có cùng số phần tử với tensor ban đầu.

Ví dụ:

  
    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 

kích thước bên trong phẳng

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

Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn tất cả các kích thước Tensor ngoại trừ NDIMS-1 cuối cùng vào kích thước đầu tiên của kết quả.

Nếu NDIMS > dims() thì các chiều dẫn đầu có kích thước 1 sẽ được thêm vào để làm cho thứ hạng đầu ra là NDIMS.

kích thước bên trong phẳng

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

kích thước bên trong và bên ngoài phẳng

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

Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn kích thước Tensor 'begin' đầu tiên vào kích thước đầu tiên của kết quả và kích thước Tensor của dims() - 'begin' - NDIMS cuối cùng vào kích thước cuối cùng của kết quả.

Nếu 'begin' < 0 thì sẽ cộng thêm |'begin'| chiều dẫn đầu có kích thước 1. Nếu 'begin' + NDIMS > dims() thì sẽ cộng thêm 'begin' + NDIMS - dims() chiều cuối có kích thước 1.

kích thước bên trong và bên ngoài phẳng

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

kích thước bên ngoài phẳng

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

Trả về dữ liệu dưới dạng Eigen::Tensor với kích thước NDIMS, thu gọn tất cả các kích thước Tensor ngoại trừ NDIMS-1 đầu tiên vào kích thước cuối cùng của kết quả.

Nếu NDIMS > dims() thì các chiều dữ liệu bổ sung có kích thước 1 sẽ được thêm vào để xếp hạng đầu ra là NDIMS.

kích thước bên ngoài phẳng

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

ma trận

TTypes< T >::Matrix matrix()

ma trận

TTypes< T >::ConstMatrix matrix() const 

toán tử=

Tensor & operator=(
  const Tensor & other
)

Gán toán tử. Tensor này chia sẻ bộ nhớ lưu trữ cơ bản với các tensor khác.

toán tử=

Tensor & operator=(
  Tensor && other
)

Toán tử di chuyển. Xem hàm tạo di chuyển để biết thêm chi tiết.

diễn giải lại chiều cuối cùng

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

Trả về dữ liệu tensor cho một Eigen::Tensor với các phần tử chiều cuối cùng được chuyển đổi thành các phần tử đơn lẻ có kiểu dữ liệu lớn hơn.

Ví dụ, điều này hữu ích cho các kernel có thể xử lý các tensor NCHW_VECT_C int8 như các tensor NCHW int32. Kích thước của (T) phải bằng kích thước của kiểu phần tử gốc * số phần tử trong chiều cuối cùng ban đầu. NDIMS phải nhỏ hơn số chiều ban đầu 1.

diễn giải lại chiều cuối cùng

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

Trả về dữ liệu tensor cho một Eigen::Tensor với các phần tử chiều cuối cùng được chuyển đổi thành các phần tử đơn lẻ có kiểu dữ liệu lớn hơn.

Ví dụ, điều này hữu ích cho các kernel có thể xử lý các tensor NCHW_VECT_C int8 như các tensor NCHW int32. Kích thước của (T) phải bằng kích thước của kiểu phần tử gốc * số phần tử trong chiều cuối cùng ban đầu. NDIMS phải nhỏ hơn số chiều ban đầu 1.

vô hướng

TTypes< T >::Scalar scalar()

Trả về dữ liệu Tensor dưới dạng TensorMap có kích thước cố định là 1: TensorMap > .

Việc sử dụng scalar() cho phép trình biên dịch thực hiện các tối ưu hóa vì kích thước của tensor đã được biết tại thời điểm biên dịch.

vô hướng

TTypes< T >::ConstScalar scalar() const 

hình dạng

const TensorShape & shape() const 

Trả về hình dạng của tensor.

hình dạng

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

hình dạng

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

tensor

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

tensor

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

dữ liệu tensor

StringPiece tensor_data() const 

Trả về một StringPiece ánh xạ đến bộ đệm của tensor hiện tại.

Đối StringPiece trả về có thể trỏ đến vị trí bộ nhớ trên các thiết bị mà CPU không thể truy cập trực tiếp.

LƯU Ý: Bộ đệm tensor cơ bản được đếm tham chiếu, do đó vòng đời của nội dung được ánh xạ bởi StringPiece trùng khớp với vòng đời của bộ đệm; người gọi nên đảm bảo rằng bộ đệm không bị hủy trong khi StringPiece vẫn đang được sử dụng.

YÊU CẦU: DataTypeCanUseMemcpy(dtype()) .

không căn chỉnh phẳng

TTypes< T >::UnalignedFlat unaligned_flat()

không căn chỉnh phẳng

TTypes< T >::UnalignedConstFlat unaligned_flat() const 

hình dạng không thẳng hàng

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

hình dạng không thẳng hàng

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

vectơ

TTypes< T >::Vec vec()

Trả về dữ liệu tensor dưới dạng Eigen::Tensor với kiểu dữ liệu và kích thước của Tensor này.

Hãy sử dụng các phương pháp này khi bạn biết kiểu dữ liệu và số chiều của Tensor và muốn một Eigen::Tensor được tự động điều chỉnh kích thước sao cho phù hợp với kích thước của Tensor đó. Việc kiểm tra triển khai sẽ thất bại nếu kiểu dữ liệu hoặc kích thước không khớp.

Ví dụ:

  
    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 

Các phiên bản hằng số của tất cả các phương thức trên.

~Tensor

 ~Tensor()