przepływ tensorowy:: Napinacz

#include <tensor.h>

Reprezentuje n-wymiarową tablicę wartości.

Streszczenie

Konstruktory i destruktory

Tensor ()
Tworzy 1-wymiarowy, 0-elementowy tensor zmiennoprzecinkowy.
Tensor (DataType type, const TensorShape & shape)
Tworzy Tensor o podanym type i shape .
Tensor (Allocator *a, DataType type, const TensorShape & shape)
Tworzy tensor z type wejściowym i shape , używając alokatora a do alokacji bazowego bufora.
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr)
Tworzy tensor z type wejściowym i shape , używając alokatora a i określonego "allocation_attr" do alokacji bazowego bufora.
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf)
Tworzy tensor z wejściowym typem danych, kształtem i buf.
Tensor (DataType type)
Tworzy pusty Tensor danego typu 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 ()

Funkcje publiczne

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
Wypełnia proto *this tensora.
AsProtoTensorContent (TensorProto *proto) const
void
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape)
Status
Skopiuj drugi tensor do tego tensora, przekształć go i zinterpretuj typ danych bufora.
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT
bool
Skopiuj drugi tensor do tego tensora i przekształć go.
DebugString (int num_values) const
string
Czytelne dla człowieka podsumowanie tensora odpowiedniego do debugowania.
DebugString () const
string
DeviceSafeDebugString () const
string
FillDescription (TensorDescription *description) const
void
Wypełnij proto TensorDescription metadanymi dotyczącymi tensora, które są 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 prawdę, jeśli ten tensor jest wyrównany.
IsInitialized () const
bool
Jeśli to konieczne, czy tensor został zainicjowany?
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 podplaster z tego tensora wzdłuż pierwszego wymiaru.
SummarizeValue (int64 max_entries, bool print_v2) const
string
Wyrenderuj pierwsze wartości max_entries w *this do ciągu.
TotalBytes () const
size_t
Zwraca szacunkowe użycie pamięci tego tensora.
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape)
void
Podobnie jak BitcastFrom, ale CHECK nie powiedzie się, jeśli jakiekolwiek warunki wstępne nie zostaną spełnione.
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 dtype 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 dtype 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 dtype 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 dtype 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
Zwróć dane tensora jako Eigen::Tensor typu danych i określonego kształtu.
flat () const
TTypes< T >::ConstFlat
flat_inner_dims ()
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz ostatniego NDIMS-1 do pierwszego wymiaru 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, zwijając pierwsze „początkowe” wymiary Tensor do pierwszego wymiaru wyniku i wymiary Tensor ostatniego dims() — „początek” — NDIMS do ostatniego wymiaru wynik.
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, zwijając wszystkie wymiary Tensor oprócz pierwszego NDIMS-1 do ostatniego wymiaru wyniku.
flat_outer_dims () const
TTypes< T, NDIMS >::ConstTensor
matrix ()
TTypes< T >::Matrix
matrix () const
TTypes< T >::ConstMatrix
operator= (const Tensor & other)
Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób.
operator= ( Tensor && other)
Przenieś operatora. Zobacz konstruktor przenoszenia, aby uzyskać szczegółowe informacje.
reinterpret_last_dimension ()
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
reinterpret_last_dimension () const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
scalar ()
TTypes< T >::Scalar
Zwróć dane Tensor jako TensorMap o stałym rozmiarze 1: TensorMap > 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 bieżący bufor 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 rozmiarem tego Tensor .
vec () const
TTypes< T >::ConstVec
Stałe wersje wszystkich powyższych metod.

Funkcje publiczne

Przydzielone bajty

size_t AllocatedBytes() const 

AsProtoField

void AsProtoField(
  TensorProto *proto
) const 

Wypełnia proto *this tensora.

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

AsProtoTensorContent

void AsProtoTensorContent(
  TensorProto *proto
) const 

Bitcast From

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

Skopiuj drugi tensor do tego tensora, przekształć go i zinterpretuj typ danych bufora.

Jeśli zostanie zwrócone Status::OK(), dwa tensory współdzielą teraz tę samą podstawową pamięć masową.

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

Konkretnie:

shape.num_elements() * DataTypeSize(typ)

musi być równy

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

Dodatkowo funkcja ta wymaga:

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

Jeśli którekolwiek z wymagań nie jest spełnione, zwracane są błędy::InvalidArgument.

Kopiuj z

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

Skopiuj drugi tensor do tego tensora i przekształć go.

Ten tensor współdzieli pamięć masową innych osób. Zwraca true jeśli other.shape() ma taką samą liczbę elementów o podanym shape .

Ciąg debugowania

string DebugString(
  int num_values
) const 

Czytelne dla człowieka podsumowanie tensora odpowiedniego do debugowania.

Ciąg debugowania

string DebugString() const 

DeviceSafeDebugString

string DeviceSafeDebugString() const 

WypełnijOpis

void FillDescription(
  TensorDescription *description
) const 

Wypełnij proto TensorDescription metadanymi dotyczącymi tensora, które są przydatne do monitorowania i debugowania.

Od Proto

bool FromProto(
  const TensorProto & other
) TF_MUST_USE_RESULT

Przeanalizuj other i skonstruuj tensor.

Zwraca true jeśli parsowanie się powiedzie. Jeśli parsowanie się nie powiedzie, stan *this pozostaje niezmieniony.

Od Proto

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

Jest wyrównany

bool IsAligned() const 

Zwraca prawdę, jeśli ten tensor jest wyrównany.

jest zainicjowany

bool IsInitialized() const 

Jeśli to konieczne, czy tensor został zainicjowany?

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

Czy 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 

SharesBufferZ

bool SharesBufferWith(
  const Tensor & b
) const 

Plasterek

Tensor Slice(
  int64 dim0_start,
  int64 dim0_limit
) const 

Przetnij ten tensor wzdłuż pierwszego wymiaru.

Tzn, zwrócony tensor spełnia wartość return[i, ...] == this[dim0_start + i, ...]. Zwrócony tensor współdzieli bazowy bufor tensora 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 pewnych metod, które mają wymaganie wyrównania (np. flat() , tensor() ).

UWAGA: Po podaniu tensora N-wymiarowego, ta metoda zwraca tensor również z N-wymiarowymi. Jeśli chcesz wybrać tensor podrzędny, zobacz SubSlice.

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

Podkawałek

Tensor SubSlice(
  int64 index
) const 

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

Po podaniu tensora N-wymiarowego, ta metoda zwraca tensor o wymiarach N-1, gdzie zwrócony tensor jest fragmentem tensora wejściowego wzdłuż pierwszego wymiaru. Wymiary N-1 zwracanego tensora są ostatnimi wymiarami N-1 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 pewnych metod, które mają wymaganie wyrównania (np. flat() , tensor() ).

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

Sumuj wartość

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

Wyrenderuj pierwsze wartości max_entries w *this do ciągu.

Napinacz

 Tensor()

Tworzy 1-wymiarowy, 0-elementowy tensor zmiennoprzecinkowy.

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

Tensor(DT_FLOAT, TensorShape({}))

      

Tensor

 Tensor(
  DataType type,
  const TensorShape & shape
)

Tworzy Tensor o podanym type i shape .

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

Bazowy bufor jest przydzielany przy użyciu CPUAllocator .

Napinacz

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

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

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

trzeba przeżyć a tego Tensora .

Napinacz

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

Tworzy tensor z type wejściowym i shape , używając alokatora a i określonego "allocation_attr" do alokacji bazowego bufora.

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

trzeba przeżyć a tego Tensora .

Napinacz

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

Tworzy tensor z wejściowym typem danych, kształtem i buf.

Uzyskuje ref na buff, który należy do tego Tensora .

Napinacz

 Tensor(
  DataType type
)

Tworzy pusty Tensor danego typu danych.

Podobnie jak Tensor() , zwraca 1-wymiarowy, 0-elementowy Tensor z IsInitialized() zwracającym True. Zobacz dokumentację Tensor() , aby uzyskać szczegółowe informacje.

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 tej rozmowie można go bezpiecznie zniszczyć i można do niego przypisać, ale inne wywołania (np. manipulacja kształtem) nie są prawidłowe.

Całkowita liczba bajtów

size_t TotalBytes() const 

Zwraca szacunkowe użycie pamięci tego tensora.

Niebezpieczna kopia z wewnętrznego

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

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

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 dtype T .

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w stosunku do 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 dtype T .

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w stosunku do shaped() .

bit_casted_tensor

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 dtype T .

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo co tensor() , z wyjątkiem dozwolonego bitcastu.

bit_casted_tensor

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 dtype T .

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo co tensor() , z wyjątkiem dozwolonego bitcastu.

dane

void * data() const 

dim_size

int64 dim_size(
  int d
) const 

Wygodny akcesorium do kształtu tensora.

ściemniać

int dims() const 

Wygodny akcesorium do kształtu tensora.

W przypadku wszystkich akcesorów kształtu zobacz komentarze dotyczące odpowiednich metod TensorShape w tensor_shape.h .

dtype

DataType dtype() const 

Zwraca typ danych.

mieszkanie

TTypes< T >::Flat flat()

Zwróć dane tensora jako Eigen::Tensor typu danych i określonego kształtu.

Te metody umożliwiają dostęp do danych w wybranych przez Ciebie wymiarach i rozmiarach. Nie musisz znać liczby wymiarów Tensora , aby je wywołać. CHECK jednak, że typ pasuje i żądane wymiary tworzą Eigen::Tensor z taką samą liczbą 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({4, 15});
    // CHECK fails, bad num elements:
    auto outer = my_ten.shaped({4, 8});
    // 3D Eigen::Tensor 6 x 5 x 2:
    auto weird = my_ten.shaped({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()

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz ostatniego NDIMS-1 do pierwszego wymiaru wyniku.

Jeśli NDIMS > dims () , to zostaną dodane wymiary wiodące o rozmiarze 1, aby wynikowy był 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
)

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając pierwsze „początkowe” wymiary Tensor do pierwszego wymiaru wyniku i wymiary Tensor ostatniego dims() — „początek” — NDIMS do ostatniego wymiaru wynik.

Jeśli 'początek' < 0, to |'początek'| zostaną dodane wymiary wiodące w rozmiarze 1. Jeśli 'begin' + NDIMS > dims () , to 'begin' + NDIMS - dims () zostaną dodane końcowe wymiary o rozmiarze 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()

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz pierwszego NDIMS-1 do ostatniego wymiaru wyniku.

Jeśli NDIMS > dims () , to zostaną dodane końcowe wymiary o rozmiarze 1, aby wynikowy ranking NDIMS.

flat_outer_dims

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
)

Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób.

operator=

Tensor & operator=(
  Tensor && other
)

Przenieś operatora. Zobacz konstruktor przenoszenia, aby uzyskać szczegółowe informacje.

reinterpretuj_ostatni_wymiar

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

Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.

Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. NDIMS powinien być o 1 mniejszy niż pierwotna liczba wymiarów.

reinterpretuj_ostatni_wymiar

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

Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.

Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. NDIMS powinien być o 1 mniejszy niż pierwotna liczba wymiarów.

skalarny

TTypes< T >::Scalar scalar()

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

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

skalarny

TTypes< T >::ConstScalar scalar() const 

kształt

const TensorShape & shape() const 

Zwraca kształt tensora.

w kształcie

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

w kształcie

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 bieżący bufor tensora.

Zwrócony StringPiece może wskazywać na lokalizację pamięci w urządzeniach, do których procesor nie może bezpośrednio zaadresować.

UWAGA: Bazowy bufor tensora jest ponownie liczony, więc czas życia zawartości mapowanej przez element 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()) .

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

l10n-zastępczy89

vec

l10n-zastępczy90

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

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

Przykład:

l10n-zastępczy91

l10n-zastępczy92

Stałe wersje wszystkich powyższych metod.

~Tensor

l10n-zastępczy93
,

przepływ tensorowy:: Napinacz

#include <tensor.h>

Reprezentuje n-wymiarową tablicę wartości.

Streszczenie

Konstruktory i destruktory

Tensor ()
Tworzy 1-wymiarowy, 0-elementowy tensor zmiennoprzecinkowy.
Tensor (typ DataType, const TensorShape i kształt)
Tworzy Tensor o podanym typie i kształcie.
Tensor (Allocator *a, typ DataType, const TensorShape i kształt)
Tworzy tensor z typem wejściowym i shape , używając alokatora a do alokacji bazowego bufora.
Tensor (Allocator *a, typ DataType, const TensorShape i kształt, const AllocationAttributes i alokacja_attr)
Tworzy tensor z typem wejściowym i shape , używając alokatora a i określonego "allocation_attr" do alokacji bazowego bufora.
Tensor (typ DataType, const TensorShape i kształt, TensorBuffer *buf)
Tworzy tensor z wejściowym typem danych, kształtem i buf.
Tensor (typ DataType)
Tworzy pusty Tensor danego typu danych.
Tensor (zmiennoprzecinkowa wartość_skalarna)
Tensor (podwójna wartość_skalarna)
Tensor (int32 skalar_value)
Tensor (uint32 skalar_value)
Tensor (uint16 skalar_value)
Tensor (uint8 scalar_value)
Tensor (int16 skalar_value)
Tensor (wartość_skalarna int8)
Tensor (tstring skalar_value)
Tensor (complex64 scalar_value)
Tensor (complex128 skalar_value)
Tensor (int64 skalar_value)
Tensor (uint64 skalar_value)
Tensor (wartość logiczna skalarna)
Tensor (qint8 wartość_skalarna)
Tensor (wartość_skalarna kwint8)
Tensor (qint16 wartość_skalarna)
Tensor (wartość skalarna kwint16)
Tensor (qint32 wartość_skalarna)
Tensor (bfloat16 skalar_value)
Tensor (Eigen::half skalar_value)
Tensor (wartość skalarna ResourceHandle)
Tensor (const char *scalar_value)
Tensor (const Tensor i inne)
Konstruktor kopiujący.
Tensor ( Tensor i inne)
Przenieś konstruktora.
~Tensor ()

Funkcje publiczne

AlloatedBytes () const
rozmiar_t
AsProtoField (TensorProto *proto) const
próżnia
Wypełnia proto * zawartością tego tensora.
AsProtoTensorContent (TensorProto *proto) const
próżnia
BitcastFrom (const Tensor i inne, DataType dtype, const TensorShape i kształt)
Status
Skopiuj drugi tensor do tego tensora, przekształć go i zinterpretuj typ danych bufora.
CopyFrom (const Tensor i inne, const TensorShape i kształt) TF_MUST_USE_RESULT
głupota
Skopiuj drugi tensor do tego tensora i przekształć go.
DebugString (int num_values) const
strunowy
Czytelne dla człowieka podsumowanie tensora odpowiedniego do debugowania.
DebugString () const
strunowy
DeviceSafeDebugString () const
strunowy
FillDescription (TensorDescription *opis) const
próżnia
Wypełnij proto TensorDescription metadanymi dotyczącymi tensora, które są przydatne do monitorowania i debugowania.
FromProto (const TensorProto i inne) TF_MUST_USE_RESULT
głupota
Przeanalizuj inne i skonstruuj tensor.
FromProto (Alokator *a, const TensorProto i inne) TF_MUST_USE_RESULT
głupota
Jest wyrównany () const
głupota
Zwraca prawdę, jeśli ten tensor jest wyrównany.
IsInitialized () const
głupota
Jeśli to konieczne, czy tensor został zainicjowany?
IsSameSize (const Tensor & b) const
głupota
Liczba elementów () const
int64
Wygodny akcesorium do kształtu tensora.
RefCountIsOne () const
głupota
SharesBufferWith (const Tensor & b) const
głupota
Kawałek (int64 dim0_start, int64 dim0_limit) const
Napinacz
Przetnij ten tensor wzdłuż pierwszego wymiaru.
SubSlice (indeks int64) const
Napinacz
Wybierz podplaster z tego tensora wzdłuż pierwszego wymiaru.
SummarizeValue (int64 max_entries, bool print_v2) const
strunowy
Wyrenderuj pierwsze wartości max_entries w *this do ciągu.
TotalBytes () const
rozmiar_t
Zwraca szacunkowe użycie pamięci tego tensora.
UnsafeCopyFromInternal (const Tensor i inne, DataType dtype, const TensorShape i kształt)
próżnia
Podobnie jak BitcastFrom, ale CHECK nie powiedzie się, jeśli jakiekolwiek warunki wstępne nie zostaną spełnione.
bit_casted_shaped (gtl::ArraySlice< int64 > nowe_rozmiary)
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy dtype T .
bit_casted_shaped (gtl::ArraySlice< int64 > nowe_rozmiary) const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzutuj na nowy dtype 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 dtype 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 dtype T .
dane () const
próżnia *
dim_size (int d) const
int64
Wygodny akcesorium do kształtu tensora.
dims () const
int
Wygodny akcesorium do kształtu tensora.
dtype () const
Typ danych
Zwraca typ danych.
mieszkanie ()
TTypes< T >::Płaskie
Zwróć dane tensora jako Eigen::Tensor typu danych i określonego kształtu.
mieszkanie () const
TTypes< T >::ConstFlat
flat_inner_dims ()
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz ostatniego NDIMS-1 do pierwszego wymiaru wyniku.
flat_inner_dims () const
TTypes< T, NDIMS >::ConstTensor
flat_inner_outer_dims (początek int64)
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając pierwsze „początkowe” wymiary Tensor do pierwszego wymiaru wyniku i wymiary Tensor ostatniego dims() — „początek” — NDIMS do ostatniego wymiaru wynik.
flat_inner_outer_dims (początek int64) const
TTypes< T, NDIMS >::ConstTensor
flat_outer_dims ()
TTypes< T, NDIMS >:: Tensor
Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz pierwszego NDIMS-1 do ostatniego wymiaru wyniku.
flat_outer_dims () const
TTypes< T, NDIMS >::ConstTensor
macierz ()
TTypes< T >::Macierz
macierz () const
TTypes< T >::ConstMatrix
operator= (const Tensor i inne)
Tensor i
Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób.
operator= ( Tensor i& inne)
Tensor i
Przenieś operatora. Zobacz konstruktor przenoszenia, aby uzyskać szczegółowe informacje.
reinterpretuj_last_dimension ()
TTypes< T, NDIMS >:: Tensor
Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
reinterpretuj_ostatni_wymiar () const
TTypes< T, NDIMS >::ConstTensor
Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
skalarny ()
TTypes< T >::Scalar
Zwróć dane Tensor jako TensorMap o stałym rozmiarze 1: TensorMap > .
skalarny () const
TTypes< T >::ConstScalar
kształt () const
const TensorShape &
Zwraca kształt tensora.
shaped (gtl::ArraySlice< int64 > nowe_rozmiary)
TTypes< T, NDIMS >:: Tensor
shaped (gtl::ArraySlice< int64 > nowe_rozmiary) const
TTypes< T, NDIMS >::ConstTensor
tensor ()
TTypes< T, NDIMS >:: Tensor
tensor () const
TTypes< T, NDIMS >::ConstTensor
tensor_data () const
Kawałek sznurka
Zwraca StringPiece mapujący bieżący bufor 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 > nowe_rozmiary) const
TTypes< T, NDIMS >::UnalignedConstTensor
vec ()
TTypes< T >::Vec
Zwróć dane tensora jako Eigen::Tensor z typem i rozmiarem tego Tensora .
vec () const
TTypes< T >::ConstVec
Stałe wersje wszystkich powyższych metod.

Funkcje publiczne

Przydzielone bajty

l10n-zastępczy1

AsProtoField

l10n-zastępczy2

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

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

AsProtoTensorContent

l10n-zastępczy3

Bitcast From

l10n-zastępczy4

Skopiuj drugi tensor do tego tensora, przekształć go i zinterpretuj typ danych bufora.

Jeśli zostanie zwrócone Status::OK(), dwa tensory współdzielą teraz tę samą podstawową pamięć masową.

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

Konkretnie:

shape.num_elements() * DataTypeSize(typ)

musi być równy

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

Dodatkowo funkcja ta wymaga:

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

Jeśli którekolwiek z wymagań nie jest spełnione, zwracane są błędy::InvalidArgument.

Kopiuj z

l10n-zastępczy5

Skopiuj drugi tensor do tego tensora i przekształć go.

Ten tensor współdzieli pamięć masową innych osób. Zwraca true, jeśli other.shape() ma taką samą liczbę elementów o podanym kształcie .

Ciąg debugowania

l10n-zastępczy6

Czytelne dla człowieka podsumowanie tensora odpowiedniego do debugowania.

Ciąg debugowania

l10n-zastępczy7

DeviceSafeDebugString

l10n-zastępczy8

WypełnijOpis

l10n-zastępczy9

Wypełnij proto TensorDescription metadanymi dotyczącymi tensora, które są przydatne do monitorowania i debugowania.

Od Proto

l10n-zastępczy10

Przeanalizuj inne i skonstruuj tensor.

Zwraca true, jeśli parsowanie się powiedzie. Jeśli parsowanie się nie powiedzie, stan *this pozostaje niezmieniony.

Od Proto

l10n-zastępczy11

Jest wyrównany

l10n-zastępczy12

Zwraca prawdę, jeśli ten tensor jest wyrównany.

jest zainicjowany

l10n-zastępczy13

Jeśli to konieczne, czy tensor został zainicjowany?

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

Czy ten sam rozmiar

l10n-zastępczy14

Liczba elementów

l10n-zastępczy15

Wygodny akcesorium do kształtu tensora.

RefCountIsOne

l10n-zastępczy16

SharesBufferZ

l10n-zastępczy17

Plasterek

l10n-zastępczy18

Przetnij ten tensor wzdłuż pierwszego wymiaru.

Tzn, zwrócony tensor spełnia wartość return[i, ...] == this[dim0_start + i, ...]. Zwrócony tensor współdzieli bazowy bufor tensora 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 pewnych metod, które mają wymaganie wyrównania (np. flat() , tensor() ).

UWAGA: Po podaniu tensora N-wymiarowego, ta metoda zwraca tensor również z N-wymiarowymi. Jeśli chcesz wybrać tensor podrzędny, zobacz SubSlice.

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

Podkawałek

l10n-zastępczy19

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

Po podaniu tensora N-wymiarowego, ta metoda zwraca tensor o wymiarach N-1, gdzie zwrócony tensor jest fragmentem tensora wejściowego wzdłuż pierwszego wymiaru. Wymiary N-1 zwracanego tensora są ostatnimi wymiarami N-1 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 pewnych metod, które mają wymaganie wyrównania (np. flat() , tensor() ).

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

Sumuj wartość

l10n-zastępczy20

Wyrenderuj pierwsze wartości max_entries w *this do ciągu.

Napinacz

l10n-zastępczy21

Tworzy 1-wymiarowy, 0-elementowy tensor zmiennoprzecinkowy.

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

l10n-zastępczy22

l10n-zastępczy23

Tworzy Tensor o podanym typie i kształcie.

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

Bazowy bufor jest przydzielany przy użyciu CPUAllocator .

Napinacz

l10n-zastępczy24

Tworzy tensor z typem wejściowym i shape , używając alokatora a do alokacji bazowego bufora.

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

trzeba przeżyć życie tego Tensora.

Napinacz

l10n-zastępczy25

Tworzy tensor z typem wejściowym i shape , używając alokatora a i określonego "allocation_attr" do alokacji bazowego bufora.

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

trzeba przeżyć życie tego Tensora.

Napinacz

l10n-zastępczy26

Tworzy tensor z wejściowym typem danych, kształtem i buf.

Uzyskuje ref na buff, który należy do tego Tensora.

Napinacz

l10n-zastępczy27

Tworzy pusty Tensor danego typu danych.

Podobnie jak Tensor() , zwraca 1-wymiarowy, 0-elementowy Tensor z IsInitialized() zwracającym True. Zobacz dokumentację Tensor(), aby uzyskać szczegółowe informacje.

Napinacz

l10n-zastępczy28

Napinacz

l10n-zastępczy29

Napinacz

l10n-zastępczy30

Napinacz

l10n-zastępczy31

Napinacz

l10n-zastępczy32

Napinacz

l10n-zastępczy33

Napinacz

l10n-zastępczy34

Napinacz

l10n-zastępczy35

Napinacz

l10n-zastępczy36

Napinacz

l10n-zastępczy37

Napinacz

l10n-zastępczy38

Napinacz

l10n-zastępczy39

Napinacz

l10n-zastępczy40

Napinacz

l10n-zastępczy41

Napinacz

l10n-zastępczy42

Napinacz

l10n-zastępczy43

Napinacz

l10n-zastępczy44

Napinacz

l10n-zastępczy45

Napinacz

l10n-zastępczy46

Napinacz

l10n-zastępczy47

Napinacz

l10n-zastępczy48

Napinacz

l10n-zastępczy49

Napinacz

l10n-zastępczy50

Napinacz

l10n-zastępczy51

Konstruktor kopiujący.

Napinacz

l10n-zastępczy52

Przenieś konstruktora.

Po tej rozmowie można go bezpiecznie zniszczyć i można do niego przypisać, ale inne wywołania (np. manipulacja kształtem) nie są prawidłowe.

Całkowita liczba bajtów

l10n-zastępczy53

Zwraca szacunkowe użycie pamięci tego tensora.

Niebezpieczna kopia z wewnętrznego

l10n-zastępczy54

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

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

bit_casted_shaped

l10n-zastępczy55

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

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w stosunku do shaped() .

bit_casted_shaped

l10n-zastępczy56

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

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolony bitcast to jedyna różnica w stosunku do shaped() .

bit_casted_tensor

l10n-zastępczy57

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

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo co tensor(), z wyjątkiem dozwolonego bitcastu.

bit_casted_tensor

l10n-zastępczy58

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

Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo co tensor(), z wyjątkiem dozwolonego bitcastu.

dane

l10n-zastępczy59

dim_size

l10n-zastępczy60

Wygodny akcesorium do kształtu tensora.

ściemniać

l10n-zastępczy61

Wygodny akcesorium do kształtu tensora.

W przypadku wszystkich akcesorów kształtu zobacz komentarze dotyczące odpowiednich metod TensorShape w tensor_shape.h .

dtype

l10n-zastępczy62

Zwraca typ danych.

mieszkanie

l10n-zastępczy63

Zwróć dane tensora jako Eigen::Tensor typu danych i określonego kształtu.

Te metody umożliwiają dostęp do danych w wybranych przez Ciebie wymiarach i rozmiarach. Nie musisz znać liczby wymiarów Tensora, aby je wywołać. SPRAWDZĄ jednak, że typ pasuje i żądane wymiary tworzą Eigen::Tensor z taką samą liczbą elementów jak tensor.

Przykład:

l10n-zastępczy64

l10n-zastępczy65

flat_inner_dims

l10n-zastępczy66

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz ostatniego NDIMS-1 do pierwszego wymiaru wyniku.

Jeśli NDIMS > dims(), to zostaną dodane wymiary wiodące o rozmiarze 1, aby wynikowy był NDIMS.

flat_inner_dims

l10n-zastępczy67

flat_inner_outer_dims

l10n-zastępczy68

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając pierwsze „początkowe” wymiary Tensor do pierwszego wymiaru wyniku i wymiary Tensor ostatniego dims() — „początek” — NDIMS do ostatniego wymiaru wynik.

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

flat_inner_outer_dims

l10n-zastępczy69

flat_outer_dims

l10n-zastępczy70

Zwraca dane jako Eigen::Tensor z wymiarami NDIMS, zwijając wszystkie wymiary Tensor oprócz pierwszego NDIMS-1 do ostatniego wymiaru wyniku.

Jeśli NDIMS > dims(), to zostaną dodane końcowe wymiary o rozmiarze 1, aby wynikowy ranking NDIMS.

flat_outer_dims

l10n-zastępczy71

matryca

l10n-zastępczy72

matryca

l10n-zastępczy73

operator=

l10n-zastępczy74

Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób.

operator=

l10n-zastępczy75

Przenieś operatora. Zobacz konstruktor przenoszenia, aby uzyskać szczegółowe informacje.

reinterpretuj_ostatni_wymiar

l10n-zastępczy76

Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.

Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. NDIMS powinien być o 1 mniejszy niż pierwotna liczba wymiarów.

reinterpretuj_ostatni_wymiar

l10n-zastępczy77

Zwróć dane tensora do Eigen::Tensor z ostatnimi elementami wymiaru przekonwertowanymi na pojedyncze elementy większego typu.

Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory NCHW_VECT_C int8 jako tensory NCHW int32. sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * liczba elementów w oryginalnym ostatnim wymiarze. NDIMS powinien być o 1 mniejszy niż pierwotna liczba wymiarów.

skalarny

l10n-zastępczy78

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

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

skalarny

l10n-zastępczy79

kształt

l10n-zastępczy80

Zwraca kształt tensora.

w kształcie

l10n-zastępczy81

w kształcie

l10n-zastępczy82

napinacz

l10n-zastępczy83

napinacz

l10n-zastępczy84

tensor_data

l10n-zastępczy85

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

Zwrócony StringPiece może wskazywać na lokalizację pamięci w urządzeniach, do których procesor nie może bezpośrednio zaadresować.

UWAGA: Bazowy bufor tensora jest ponownie liczony, więc czas życia zawartości mapowanej przez element 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()) .

unaligned_flat

l10n-zastępczy86

unaligned_flat

l10n-zastępczy87

unaligned_shaped

l10n-zastępczy88

unaligned_shaped

l10n-zastępczy89

vec

l10n-zastępczy90

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

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

Przykład:

l10n-zastępczy91

l10n-zastępczy92

Stałe wersje wszystkich powyższych metod.

~Tensor

l10n-zastępczy93