เทนเซอร์โฟลว์:: เทนเซอร์

#include <tensor.h>

แสดงถึงอาร์เรย์ n มิติของค่า

สรุป

ตัวสร้างและผู้ทำลาย

Tensor ()
สร้างเทนเซอร์โฟลต 1 มิติ 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 (T *t)
~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
std::string
ข้อมูลสรุปเทนเซอร์ที่มนุษย์อ่านได้ซึ่งเหมาะสำหรับการดีบัก
DebugString () const
std::string
DeviceSafeDebugString () const
std::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
หากจำเป็น Tensor นี้ได้รับการเตรียมใช้งานแล้วหรือไม่
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
แบ่งเทนเซอร์นี้ตามมิติที่ 1
SubSlice (int64 index) const
เลือกชิ้นส่วนย่อยจากเทนเซอร์นี้ตามมิติที่ 1
SummarizeValue (int64 max_entries, bool print_v2) const
std::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 ที่ระบุ
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 'เริ่มต้น' แรกไปเป็นมิติแรกของผลลัพธ์และมิติ 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 ขนาดคงที่ 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 ของวิธีการทั้งหมดข้างต้น

งานสาธารณะ

ไบต์ที่จัดสรร

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 และประเภทและรูปร่างที่กำหนดนั้น "เข้ากันได้" (กล่าวคือ พวกมันใช้จำนวนไบต์เท่ากัน)

โดยเฉพาะ:

รูปร่าง 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

คัดลอกเทนเซอร์อีกตัวหนึ่งลงในเทนเซอร์นี้แล้วปรับรูปร่างใหม่

เทนเซอร์นี้แชร์พื้นที่เก็บข้อมูลพื้นฐานของผู้อื่น คืนค่า true if other.shape() มีจำนวนองค์ประกอบของ shape ที่กำหนดเท่ากัน

DebugString

std::string DebugString(
  int num_values
) const 

ข้อมูลสรุปเทนเซอร์ที่มนุษย์อ่านได้ซึ่งเหมาะสำหรับการดีบัก

DebugString

std::string DebugString() const 

DeviceSafeDebugString

std::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 

หากจำเป็น Tensor นี้ได้รับการเตรียมใช้งานแล้วหรือไม่

เทนเซอร์แบบไม่มีองค์ประกอบจะถือว่าเริ่มต้นได้เสมอ แม้ว่าจะไม่เคยถูกกำหนดให้และไม่มีการจัดสรรหน่วยความจำก็ตาม

มีขนาดเดียวกัน

bool IsSameSize(
  const Tensor & b
) const 

NumElements

int64 NumElements() const 

อุปกรณ์เสริมที่สะดวกสำหรับรูปทรงเทนเซอร์

RefCountIsOne

bool RefCountIsOne() const 

แบ่งปันบัฟเฟอร์ด้วย

bool SharesBufferWith(
  const Tensor & b
) const 

ชิ้น

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

แบ่งเทนเซอร์นี้ตามมิติที่ 1

กล่าวคือเทนเซอร์ที่ส่งคืนเป็นไปตามที่ส่งคืน[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 

เลือกชิ้นส่วนย่อยจากเทนเซอร์นี้ตามมิติที่ 1

เมื่อป้อนด้วยเทนเซอร์ขนาด N วิธีการนี้จะส่งคืนเทนเซอร์ที่มีขนาด N-1 โดยที่เทนเซอร์ที่ส่งคืนจะเป็นส่วนย่อยของเทนเซอร์อินพุตตามมิติแรก ขนาด N-1 ของเทนเซอร์ที่ส่งคืนคือขนาด N-1 สุดท้ายของเทนเซอร์อินพุต

หมายเหตุ: เทนเซอร์ที่ส่งคืนอาจไม่เป็นไปตามข้อกำหนดการจัดตำแหน่งเดียวกันกับเทนเซอร์นี้ ทั้งนี้ขึ้นอยู่กับรูปร่าง ผู้เรียกจะต้องตรวจสอบการจัดตำแหน่งเทนเซอร์ที่ส่งคืนก่อนที่จะเรียกวิธีการบางอย่างที่มีข้อกำหนดการจัดตำแหน่ง (เช่น flat() , tensor() )

ต้องการ: dims() >= 1 ต้องการ: 0 <= index < dim_size(0)

สรุปคุณค่า

std::string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

แสดงค่า max_entries แรกใน *this ลงในสตริง

เทนเซอร์

 Tensor()

สร้างเทนเซอร์โฟลต 1 มิติ 0 องค์ประกอบ

เทนเซอร์ ที่ส่งคืนไม่ใช่สเกลาร์ (รูปร่าง {}) แต่เป็น เทนเซอร์ มิติเดียวที่ว่างเปล่าแทน (รูปร่าง {0}, NumElements() == 0) เนื่องจากไม่มีองค์ประกอบ จึงไม่จำเป็นต้องกำหนดค่าและกำหนดค่าเริ่มต้นตามค่าเริ่มต้น ( IsInitialized() เป็นจริง) หากเป็นสิ่งที่ไม่พึงประสงค์ ให้พิจารณาสร้างสเกลาร์องค์ประกอบเดียวซึ่งจำเป็นต้องมีการกำหนดค่าเริ่มต้น:

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

สร้าง เทนเซอร์ ตาม type และ shape ที่กำหนด

หาก LogMemory::IsEnabled() การจัดสรรจะถูกบันทึกว่ามาจากเคอร์เนลและขั้นตอนที่ไม่รู้จัก การเรียกตัวสร้าง Tensor โดยตรงจากภายใน Op นั้นเลิกใช้แล้ว: ใช้วิธี OpKernelConstruction/OpKernelContext allowance_* เพื่อจัดสรรเทนเซอร์ใหม่ ซึ่งจะบันทึกเคอร์เนลและขั้นตอน

บัฟเฟอร์พื้นฐานได้รับการจัดสรรโดยใช้ CPUAllocator

เทนเซอร์

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

สร้างเทนเซอร์ที่มี type อินพุตและ shape โดยใช้ตัวจัดสรร a เพื่อจัดสรรบัฟเฟอร์พื้นฐาน

หาก LogMemory::IsEnabled() การจัดสรรจะถูกบันทึกว่ามาจากเคอร์เนลและขั้นตอนที่ไม่รู้จัก การเรียกตัวสร้าง Tensor โดยตรงจากภายใน Op นั้นเลิกใช้แล้ว: ใช้วิธี OpKernelConstruction/OpKernelContext allowance_* เพื่อจัดสรรเทนเซอร์ใหม่ ซึ่งจะบันทึกเคอร์เนลและขั้นตอน

a มีอายุการใช้งานยาวนานกว่าอายุการใช้งานของ Tensor นี้

เทนเซอร์

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

สร้างเทนเซอร์ที่มี type อินพุตและ shape โดยใช้ตัวจัดสรร a และ "allocation_attr" ที่ระบุเพื่อจัดสรรบัฟเฟอร์พื้นฐาน

หากทราบเคอร์เนลและขั้นตอน allocation_attr.allocation_will_be_logged ควรตั้งค่าเป็นจริงและ LogMemory::RecordTensorAllocation ควรถูกเรียกหลังจากสร้างเมตริกซ์แล้ว การเรียกตัวสร้าง Tensor โดยตรงจากภายใน Op นั้นเลิกใช้แล้ว: ใช้วิธี OpKernelConstruction/OpKernelContext allowance_* เพื่อจัดสรรเทนเซอร์ใหม่ ซึ่งจะบันทึกเคอร์เนลและขั้นตอน

a มีอายุการใช้งานยาวนานกว่าอายุการใช้งานของ Tensor นี้

เทนเซอร์

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

สร้างเทนเซอร์ที่มีประเภทข้อมูล รูปร่าง และ buf อินพุต

ได้รับการอ้างอิง buf ที่เป็นของ Tensor นี้

เทนเซอร์

 Tensor(
  DataType type
)

สร้าง เทนเซอร์ ว่างของประเภทข้อมูลที่กำหนด

เช่นเดียวกับ Tensor() ส่งคืน Tensor 1 มิติ 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
)

ย้ายตัวสร้าง

หลังจากการโทรนี้ สามารถทำลายได้อย่างปลอดภัยและสามารถกำหนดให้กับมันได้ แต่การเรียกใช้อื่นๆ (เช่น การปรับแต่งรูปร่าง) นั้นไม่ถูกต้อง

เทนเซอร์

 Tensor(
  T *t
)=delete

จำนวนไบต์ทั้งหมด

size_t TotalBytes() const 

ส่งคืนการใช้งานหน่วยความจำโดยประมาณของเทนเซอร์นี้

ไม่ปลอดภัย CopyFromInternal

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

เช่นเดียวกับ BitcastFrom แต่ CHECK จะล้มเหลวหากไม่ตรงตามเงื่อนไขเบื้องต้น

เลิกใช้แล้ว ใช้ BitcastFrom แทนและตรวจสอบสถานะที่ส่งคืน

bit_casted_รูป

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

ส่งคืนข้อมูลเทนเซอร์ไปยัง Eigen::Tensor ด้วยรูปร่างใหม่ที่ระบุใน new_sizes และส่งไปยัง dtype T ใหม่

การใช้บิตคาสต์มีประโยชน์สำหรับการย้ายและคัดลอก บิตคาสต์ที่อนุญาตนั้นแตกต่างเพียงอย่างเดียวจาก shaped()

bit_casted_รูป

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() ยกเว้นบิตคาสต์ที่ได้รับอนุญาต

ข้อมูล

void * data() const 

dim_size

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 

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 โดยยุบมิติ Tensor 'เริ่มต้น' แรกไปเป็นมิติแรกของผลลัพธ์และมิติ Tensor ของ 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
)

ย้ายตัวดำเนินการ ดูตัวสร้างการย้ายสำหรับรายละเอียด

ตีความ_last_มิติใหม่อีกครั้ง

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

ส่งคืนข้อมูลเทนเซอร์ไปยัง Eigen::Tensor โดยที่องค์ประกอบมิติสุดท้ายถูกแปลงเป็นองค์ประกอบเดี่ยวประเภทที่ใหญ่กว่า

ตัวอย่างเช่น สิ่งนี้มีประโยชน์สำหรับเคอร์เนลที่สามารถถือว่าเทนเซอร์ NCHW_VECT_C int8 เป็นเทนเซอร์ NCHW int32 ขนาดของ (T) ควรเท่ากับขนาดขององค์ประกอบดั้งเดิมประเภท * num องค์ประกอบในมิติสุดท้ายดั้งเดิม NDIMS ควรน้อยกว่าจำนวนมิติข้อมูลเดิม 1

ตีความ_last_มิติใหม่อีกครั้ง

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 

ส่งคืนการแมป String Piece ที่บัฟเฟอร์ของเทนเซอร์ปัจจุบัน

String Piece ที่ส่งคืนอาจชี้ไปที่ตำแหน่งหน่วยความจำบนอุปกรณ์ที่ CPU ไม่สามารถระบุที่อยู่ได้โดยตรง

หมายเหตุ: เทนเซอร์บัฟเฟอร์พื้นฐานจะถูกนับใหม่ ดังนั้นอายุการใช้งานของเนื้อหาที่แมปโดย String Piece จะตรงกับอายุการใช้งานของบัฟเฟอร์ ผู้โทรควรจัดเตรียมเพื่อให้แน่ใจว่าบัฟเฟอร์ไม่ถูกทำลายในขณะที่ String Piece ยังคงใช้งานอยู่

ต้องการ: DataTypeCanUseMemcpy(dtype())

ไม่จัดแนว_flat

TTypes< T >::UnalignedFlat unaligned_flat()

ไม่จัดแนว_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 

เวอร์ชัน Const ของวิธีการทั้งหมดข้างต้น

~เทนเซอร์

 ~Tensor()