tensorflow:: Tensor

#include <tensor.h>

Reprezentuje n-wymiarową tablicę wartości.

Streszczenie

Konstruktory i destruktory

Tensor ()
Tworzy 1-wymiarowy, 0-elementowy tensor float.
Tensor (DataType type, const TensorShape & shape)
Tworzy tensor o podanym type i shape .
Tensor (Allocator *a, DataType type, const TensorShape & shape)
Tworzy tensor o type wejściowym i shape , używając alokatora a do przydzielenia bufora bazowego.
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr)
Tworzy tensor o type wejściowym i shape , używając alokatora a i określonego parametru „allocation_attr” do przydzielenia bufora bazowego.
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf)
Tworzy tensor z typem danych wejściowych, kształtem i buforem.
Tensor (DataType type)
Tworzy pusty Tensor o podanym typie danych.
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)
Konstruktor kopiujący.
Tensor ( Tensor && other)
Przenieś konstruktora.
Tensor (T *t)
~Tensor ()

Funkcje publiczne

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
Wypełnia proto zawartością *this tensora.
AsProtoTensorContent (TensorProto *proto) const
void
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape)
Status
Skopiuj inny tensor do tego tensora, zmień jego kształt i zinterpretuj ponownie typ danych bufora.
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT
bool
Skopiuj drugi tensor do tego tensora i zmień jego kształt.
DebugString (int num_values) const
std::string
Podsumowanie tensora, zrozumiałe dla człowieka i przydatne do debugowania.
DebugString () const
std::string
DeviceSafeDebugString () const
std::string
FillDescription (TensorDescription *description) const
void
Wypełnij protokół TensorDescription metadanymi na temat tensora, które będą przydatne do monitorowania i debugowania.
FromProto (const TensorProto & other) TF_MUST_USE_RESULT
bool
Przeanalizuj other i skonstruuj tensor.
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT
bool
IsAligned () const
bool
Zwraca wartość true, jeśli tensor jest wyrównany.
IsInitialized () const
bool
Czy ten tensor został zainicjowany, jeśli to konieczne?
IsSameSize (const Tensor & b) const
bool
NumElements () const
int64
Wygodny akcesorium do kształtu tensora.
RefCountIsOne () const
bool
SharesBufferWith (const Tensor & b) const
bool
Slice (int64 dim0_start, int64 dim0_limit) const
Przetnij ten tensor wzdłuż pierwszego wymiaru.
SubSlice (int64 index) const
Wybierz podwycinek z tego tensora wzdłuż pierwszego wymiaru.
SummarizeValue (int64 max_entries, bool print_v2) const
std::string
Zamień pierwsze wartości max_entries w *this na ciąg znaków.
TotalBytes () const
size_t
Zwraca szacowane użycie pamięci przez ten tensor.
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape)
void
Podobnie jak BitcastFrom, ale CHECK kończy się niepowodzeniem, jeśli nie zostaną spełnione jakiekolwiek warunki wstępne.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy typ danych T .
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy typ danych T .
bit_casted_tensor ()
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale z rzutowaniem bitowym na określony typ danych T .
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale z rzutowaniem bitowym na określony typ danych T .
data () const
void *
dim_size (int d) const
int64
Wygodny akcesorium do kształtu tensora.
dims () const
int
Wygodny akcesorium do kształtu tensora.
dtype () const
DataType
Zwraca typ danych.
flat ()
TTypes< T >::Flat
Zwraca dane tensora jako Eigen::Tensor o typie danych i określonym kształcie.
flat () const
TTypes< T >::ConstFlat
flat_inner_dims ()
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc wszystkie wymiary tensora oprócz ostatniego NDIMS-1 w pierwszym wymiarze wyniku.
flat_inner_dims () const
TTypes< T, NDIMS >::ConstTensor
flat_inner_outer_dims (int64 begin)
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc pierwsze wymiary tensora „begin” z pierwszym wymiarem wyniku oraz wymiary tensora ostatniego dims() - 'begin' - NDIMS z ostatnim wymiarem wyniku.
flat_inner_outer_dims (int64 begin) const
TTypes< T, NDIMS >::ConstTensor
flat_outer_dims ()
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc wszystkie wymiary tensora oprócz pierwszego NDIMS-1 w ostatnim wymiarze wyniku.
flat_outer_dims () const
TTypes< T, NDIMS >::ConstTensor
matrix ()
TTypes< T >::Matrix
matrix () const
TTypes< T >::ConstMatrix
operator= (const Tensor & other)
Operator przypisania. Ten tensor współdzieli pamięć bazową z innymi tensorami.
operator= ( Tensor && other)
Operator Move. Szczegóły w opisie konstruktora Move.
reinterpret_last_dimension ()
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor , a ostatnie elementy wymiaru przekonwertuj na pojedyncze elementy większego typu.
reinterpret_last_dimension () const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor , a ostatnie elementy wymiaru przekonwertuj na pojedyncze elementy większego typu.
scalar ()
TTypes< T >::Scalar
Zwróć dane tensora jako TensorMap o stałym rozmiarze 1: TensorMap > .
scalar () const
TTypes< T >::ConstScalar
shape () const
const TensorShape &
Zwraca kształt tensora.
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
Zwraca StringPiece mapujący bufor bieżącego tensora.
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
Zwróć dane tensora jako Eigen::Tensor z typem i rozmiarami tego Tensor .
vec () const
TTypes< T >::ConstVec
Wersje const wszystkich powyższych metod.

Funkcje publiczne

Przydzielone bajty

size_t AllocatedBytes() const 

Jako pole protoprotetyczne

void AsProtoField(
  TensorProto *proto
) const 

Wypełnia proto zawartością *this tensora.

AsProtoField() wypełnia powtarzane pole dla proto.dtype() , podczas gdy AsProtoTensorContent() koduje zawartość proto.tensor_content() w formie kompaktowej.

AsProtoTensorContent

void AsProtoTensorContent(
  TensorProto *proto
) const 

BitcastFrom

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

Skopiuj inny tensor do tego tensora, zmień jego kształt i zinterpretuj ponownie typ danych bufora.

Jeżeli zwrócono Status::OK(), oba tensory współdzielą teraz tę samą pamięć bazową.

To wywołanie wymaga, aby other tensor oraz dany typ i kształt były „zgodne” (tj. zajmowały taką samą liczbę bajtów).

Swoiście:

kształt.liczba_elementów() * DataTypeSize(typ)

musi być równy

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

Dodatkowo ta funkcja wymaga:

  • Rozmiar typu danych (inny.typ()) != 0
  • DataTypeSize(typ) != 0

Jeżeli którykolwiek z wymagań nie jest spełniony, zwracany jest kod errors::InvalidArgument.

Kopiuj z

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

Skopiuj drugi tensor do tego tensora i zmień jego kształt.

Ten tensor współdzieli pamięć bazową z innymi. Zwraca true , jeśli other.shape() ma taką samą liczbę elementów danego shape .

Ciąg debugowania

std::string DebugString(
  int num_values
) const 

Podsumowanie tensora, zrozumiałe dla człowieka i przydatne do debugowania.

Ciąg debugowania

std::string DebugString() const 

DeviceSafeDebugString

std::string DeviceSafeDebugString() const 

WypełnijOpis

void FillDescription(
  TensorDescription *description
) const 

Wypełnij protokół TensorDescription metadanymi na temat tensora, które będą przydatne do monitorowania i debugowania.

FromProto

bool FromProto(
  const TensorProto & other
) TF_MUST_USE_RESULT

Przeanalizuj other i skonstruuj tensor.

Zwraca true , jeśli analiza składniowa się powiedzie. Jeśli analiza składniowa się nie powiedzie, stan *this pozostaje niezmieniony.

FromProto

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

Jest wyrównany

bool IsAligned() const 

Zwraca wartość true, jeśli tensor jest wyrównany.

IsInitialized

bool IsInitialized() const 

Czy ten tensor został zainicjowany, jeśli to konieczne?

Tensory zerowego elementu są zawsze uważane za zainicjowane, nawet jeśli nigdy nie zostały przypisane i nie mają przydzielonej pamięci.

Ten sam rozmiar

bool IsSameSize(
  const Tensor & b
) const 

Liczba elementów

int64 NumElements() const 

Wygodny akcesorium do kształtu tensora.

RefCountIsOne

bool RefCountIsOne() const 

SharesBufferWith

bool SharesBufferWith(
  const Tensor & b
) const 

Plasterek

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

Przetnij ten tensor wzdłuż pierwszego wymiaru.

Oznacza to, że zwrócony tensor spełnia warunek returned[i, ...] == this[dim0_start + i, ...]. Zwrócony tensor współdzieli bufor tensora bazowego z tym tensorem.

UWAGA: Zwrócony tensor może nie spełniać tego samego wymogu wyrównania co ten tensor, w zależności od kształtu. Wywołujący musi sprawdzić wyrównanie zwróconego tensora przed wywołaniem niektórych metod, które mają wymóg wyrównania (np. flat() , tensor() ).

UWAGA: Po podaniu tensora N-wymiarowego ta metoda zwraca tensor również o N wymiarach. Jeśli chcesz wybrać podtensor, zobacz SubSlice.

WYMAGANIA: dims() >= 1 WYMAGANIA: 0 <= dim0_start <= dim0_limit <= dim_size(0)

Podwycinek

Tensor SubSlice(
  int64 index
) const 

Wybierz podwycinek z tego tensora wzdłuż pierwszego wymiaru.

Po podaniu tensora N-wymiarowego, metoda ta zwraca tensor o N-1 wymiarach, gdzie zwrócony tensor jest podwycinkiem tensora wejściowego wzdłuż pierwszego wymiaru. N-1 wymiarów zwróconego tensora to ostatnie N-1 wymiarów tensora wejściowego.

UWAGA: Zwrócony tensor może nie spełniać tego samego wymogu wyrównania co ten tensor, w zależności od kształtu. Wywołujący musi sprawdzić wyrównanie zwróconego tensora przed wywołaniem niektórych metod, które mają wymóg wyrównania (np. flat() , tensor() ).

WYMAGA: dims() >= 1 WYMAGA: 0 <= index < dim_size(0)

Podsumuj wartość

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

Zamień pierwsze wartości max_entries w *this na ciąg znaków.

Napinacz

 Tensor()

Tworzy 1-wymiarowy, 0-elementowy tensor float.

Zwrócony Tensor nie jest skalarem (kształt {}), lecz pustym, jednowymiarowym Tensorem (kształt {0}, NumElements() == 0). Ponieważ nie ma on żadnych elementów, nie trzeba mu przypisywać wartości i jest domyślnie inicjalizowany (wartość true w metodzie IsInitialized() ). Jeśli jest to niepożądane, rozważ utworzenie skalara jednoelementowego, który wymaga inicjalizacji:

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

Tworzy tensor o podanym type i shape .

W przypadku LogMemory::IsEnabled() alokacja jest rejestrowana jako pochodząca z nieznanego jądra i kroku. Wywoływanie konstruktora Tensor bezpośrednio z poziomu operacji (Op) jest przestarzałe: należy użyć metod OpKernelConstruction/OpKernelContext allocate_*, aby przydzielić nowy tensor, który rejestruje jądro i krok.

Podstawowy bufor jest przydzielany za pomocą CPUAllocator .

Napinacz

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

Tworzy tensor o type wejściowym i shape , używając alokatora a do przydzielenia bufora bazowego.

W przypadku LogMemory::IsEnabled() alokacja jest rejestrowana jako pochodząca z nieznanego jądra i kroku. Wywoływanie konstruktora Tensor bezpośrednio z poziomu operacji (Op) jest przestarzałe: należy użyć metod OpKernelConstruction/OpKernelContext allocate_*, aby przydzielić nowy tensor, który rejestruje jądro i krok.

a przetrwać żywotność tego Tensora .

Napinacz

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

Tworzy tensor o type wejściowym i shape , używając alokatora a i określonego parametru „allocation_attr” do przydzielenia bufora bazowego.

Jeśli jądro i krok są znane, parametr allocation_attr.allocation_will_be_logged należy ustawić na true, a po skonstruowaniu tensora należy wywołać LogMemory::RecordTensorAllocation. Wywołanie konstruktora tensora bezpośrednio z poziomu operacji (Op) jest przestarzałe: należy użyć metod OpKernelConstruction/OpKernelContext allocate_*, aby przydzielić nowy tensor, który rejestruje jądro i krok.

a przetrwać żywotność tego Tensora .

Napinacz

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

Tworzy tensor z typem danych wejściowych, kształtem i buforem.

Nabywa ref na buf należący do tego tensora .

Napinacz

 Tensor(
  DataType type
)

Tworzy pusty Tensor o podanym typie danych.

Podobnie jak Tensor() , zwraca jednowymiarowy, 0-elementowy Tensor , a IsInitialized() zwraca wartość True. Szczegóły znajdziesz w dokumentacji Tensor() .

Napinacz

 Tensor(
  float scalar_value
)

Napinacz

 Tensor(
  double scalar_value
)

Napinacz

 Tensor(
  int32 scalar_value
)

Napinacz

 Tensor(
  uint32 scalar_value
)

Napinacz

 Tensor(
  uint16 scalar_value
)

Napinacz

 Tensor(
  uint8 scalar_value
)

Napinacz

 Tensor(
  int16 scalar_value
)

Napinacz

 Tensor(
  int8 scalar_value
)

Napinacz

 Tensor(
  tstring scalar_value
)

Napinacz

 Tensor(
  complex64 scalar_value
)

Napinacz

 Tensor(
  complex128 scalar_value
)

Napinacz

 Tensor(
  int64 scalar_value
)

Napinacz

 Tensor(
  uint64 scalar_value
)

Napinacz

 Tensor(
  bool scalar_value
)

Napinacz

 Tensor(
  qint8 scalar_value
)

Napinacz

 Tensor(
  quint8 scalar_value
)

Napinacz

 Tensor(
  qint16 scalar_value
)

Napinacz

 Tensor(
  quint16 scalar_value
)

Napinacz

 Tensor(
  qint32 scalar_value
)

Napinacz

 Tensor(
  bfloat16 scalar_value
)

Napinacz

 Tensor(
  Eigen::half scalar_value
)

Napinacz

 Tensor(
  ResourceHandle scalar_value
)

Napinacz

 Tensor(
  const char *scalar_value
)

Napinacz

 Tensor(
  const Tensor & other
)

Konstruktor kopiujący.

Napinacz

 Tensor(
  Tensor && other
)

Przenieś konstruktora.

Po tym połączeniu, można go bezpiecznie zniszczyć i można mu przypisać określone funkcje, ale inne wywołania (np. manipulacja kształtem) są nieprawidłowe.

Napinacz

 Tensor(
  T *t
)=delete

Całkowita liczba bajtów

size_t TotalBytes() const 

Zwraca szacowane użycie pamięci przez ten tensor.

Niebezpieczne kopiowanie z wnętrza

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

Podobnie jak BitcastFrom, ale CHECK kończy się niepowodzeniem, jeśli nie zostaną spełnione jakiekolwiek warunki wstępne.

Przestarzałe. Zamiast tego użyj BitcastFrom i sprawdź zwrócony status.

bit_casted_shaped

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

Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy typ danych T .

Użycie bitcastu jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w porównaniu z shaped() .

bit_casted_shaped

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

Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy typ danych T .

Użycie bitcastu jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w porównaniu z shaped() .

tensora bitowego

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

Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale z rzutowaniem bitowym na określony typ danych T .

Użycie bitcastu jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: działa to tak samo jak tensor() z tą różnicą, że bitcast jest dozwolony.

tensora bitowego

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

Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale z rzutowaniem bitowym na określony typ danych T .

Użycie bitcastu jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: działa to tak samo jak tensor() z tą różnicą, że bitcast jest dozwolony.

dane

void * data() const 

dim_size

int64 dim_size(
  int d
) const 

Wygodny akcesorium do kształtu tensora.

przyciemnia

int dims() const 

Wygodny akcesorium do kształtu tensora.

Aby zapoznać się ze wszystkimi akcesorami kształtu, zobacz komentarze dotyczące odpowiednich metod TensorShape w tensor_shape.h .

typ danych

DataType dtype() const 

Zwraca typ danych.

płaski

TTypes< T >::Flat flat()

Zwraca dane tensora jako Eigen::Tensor o typie danych i określonym kształcie.

Metody te umożliwiają dostęp do danych o wybranych wymiarach i rozmiarach. Nie musisz znać liczby wymiarów tensora , aby je wywołać. CHECK one jednak, czy typ jest zgodny, a żądane wymiary tworzą Eigen::Tensor o takiej samej liczbie elementów jak tensor.

Przykład:

  
    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 

płaskie_wewnętrzne_wymiary

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

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc wszystkie wymiary tensora oprócz ostatniego NDIMS-1 w pierwszym wymiarze wyniku.

Jeżeli NDIMS > dims() , wówczas zostaną dodane wiodące wymiary rozmiaru 1, aby dane wyjściowe miały rangę NDIMS.

płaskie_wewnętrzne_wymiary

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

płaskie_wewnętrzne_zewnętrzne_wymiary

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

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc pierwsze wymiary tensora „begin” z pierwszym wymiarem wyniku oraz wymiary tensora ostatniego dims() - 'begin' - NDIMS z ostatnim wymiarem wyniku.

Jeśli „begin” < 0, to zostaną dodane wiodące wymiary |'begin'| o rozmiarze 1. Jeśli „begin” + NDIMS > dims() , to zostaną dodane końcowe wymiary „begin” + NDIMS - dims() o rozmiarze 1.

płaskie_wewnętrzne_zewnętrzne_wymiary

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

płaskie_zewnętrzne_wymiary

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

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, łącząc wszystkie wymiary tensora oprócz pierwszego NDIMS-1 w ostatnim wymiarze wyniku.

Jeżeli NDIMS > dims(), wówczas zostaną dodane wymiary końcowe o rozmiarze 1, aby dane wyjściowe miały rangę NDIMS.

płaskie_zewnętrzne_wymiary

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

matryca

TTypes< T >::Matrix matrix()

matryca

TTypes< T >::ConstMatrix matrix() const 

operator=

Tensor & operator=(
  const Tensor & other
)

Operator przypisania. Ten tensor współdzieli pamięć bazową z innymi tensorami.

operator=

Tensor & operator=(
  Tensor && other
)

Operator Move. Szczegóły w opisie konstruktora Move.

reinterpretuj_ostatni_wymiar

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

Zwróć dane tensora do Eigen::Tensor , a ostatnie elementy wymiaru przekonwertuj na pojedyncze elementy większego typu.

Na przykład, jest to przydatne dla jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. Parametr sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. Wartość NDIMS powinna być o 1 mniejsza od oryginalnej liczby wymiarów.

reinterpretuj_ostatni_wymiar

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

Zwróć dane tensora do Eigen::Tensor , a ostatnie elementy wymiaru przekonwertuj na pojedyncze elementy większego typu.

Na przykład, jest to przydatne dla jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. Parametr sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. Wartość NDIMS powinna być o 1 mniejsza od oryginalnej liczby wymiarów.

skalarny

TTypes< T >::Scalar scalar()

Zwróć dane tensora jako TensorMap o stałym rozmiarze 1: TensorMap > .

Użycie scalar() umożliwia kompilatorowi przeprowadzenie optymalizacji, ponieważ rozmiar tensora jest znany w momencie kompilacji.

skalarny

TTypes< T >::ConstScalar scalar() const 

kształt

const TensorShape & shape() const 

Zwraca kształt tensora.

ukształtowany

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

ukształtowany

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

napinacz

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

napinacz

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

tensor_data

StringPiece tensor_data() const 

Zwraca StringPiece mapujący bufor bieżącego tensora.

Zwrócony obiekt StringPiece może wskazywać na lokalizację w pamięci urządzenia, do której procesor nie może dotrzeć bezpośrednio.

UWAGA: Podstawowy bufor tensorowy jest przeliczany, więc czas życia zawartości mapowanej przez StringPiece jest zgodny z czasem życia bufora; wywołujący powinni zadbać o to, aby bufor nie został zniszczony, gdy StringPiece jest nadal używany.

WYMAGA: DataTypeCanUseMemcpy(dtype()) .

niewyrównany_płaski

TTypes< T >::UnalignedFlat unaligned_flat()

niewyrównany_płaski

TTypes< T >::UnalignedConstFlat unaligned_flat() const 

nieustalony_kształt

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

nieustalony_kształt

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

wektor

TTypes< T >::Vec vec()

Zwróć dane tensora jako Eigen::Tensor z typem i rozmiarami tego tensora.

Użyj tych metod, gdy znasz typ danych i liczbę wymiarów tensora i chcesz, aby Eigen::Tensor automatycznie dopasował się do rozmiarów tensora. Sprawdzenie implementacji kończy się niepowodzeniem, jeśli typ lub rozmiary są niezgodne.

Przykład:

  
    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 

Wersje const wszystkich powyższych metod.

~Tensor

 ~Tensor()