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)
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 (string 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)
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.
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 .
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.

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 <= dim0_start < 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
)

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(
  string 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.

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

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

vec

TTypes< T >::Vec vec()

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ępczy88

l10n-zastępczy89

Stałe wersje wszystkich powyższych metod.

~Tensor

l10n-zastępczy90