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) | |
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 |
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) | Tensor & Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób. |
operator= ( Tensor && other) | Tensor & 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 |
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( Tensor && other )
Przenieś konstruktora.
Po tej rozmowie
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()
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()
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()
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ępczy89vec
l10n-zastępczy90Zwróć 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ępczy93przepł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ępczy1AsProtoField
l10n-zastępczy2Wypeł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ępczy3Bitcast From
l10n-zastępczy4Skopiuj 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ępczy5Skopiuj 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ępczy6Czytelne dla człowieka podsumowanie tensora odpowiedniego do debugowania.
Ciąg debugowania
l10n-zastępczy7DeviceSafeDebugString
l10n-zastępczy8WypełnijOpis
l10n-zastępczy9Wypełnij proto TensorDescription metadanymi dotyczącymi tensora, które są przydatne do monitorowania i debugowania.
Od Proto
l10n-zastępczy10Przeanalizuj 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ępczy11Jest wyrównany
l10n-zastępczy12Zwraca prawdę, jeśli ten tensor jest wyrównany.
jest zainicjowany
l10n-zastępczy13Jeś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ępczy14Liczba elementów
l10n-zastępczy15Wygodny akcesorium do kształtu tensora.
RefCountIsOne
l10n-zastępczy16SharesBufferZ
l10n-zastępczy17Plasterek
l10n-zastępczy18Przetnij 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ępczy19Wybierz 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ępczy20Wyrenderuj pierwsze wartości max_entries w *this do ciągu.
Napinacz
l10n-zastępczy21Tworzy 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ępczy24Tworzy 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ępczy25Tworzy 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ępczy26Tworzy tensor z wejściowym typem danych, kształtem i buf.
Uzyskuje ref na buff, który należy do tego Tensora.
Napinacz
l10n-zastępczy27Tworzy 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ępczy28Napinacz
l10n-zastępczy29Napinacz
l10n-zastępczy30Napinacz
l10n-zastępczy31Napinacz
l10n-zastępczy32Napinacz
l10n-zastępczy33Napinacz
l10n-zastępczy34Napinacz
l10n-zastępczy35Napinacz
l10n-zastępczy36Napinacz
l10n-zastępczy37Napinacz
l10n-zastępczy38Napinacz
l10n-zastępczy39Napinacz
l10n-zastępczy40Napinacz
l10n-zastępczy41Napinacz
l10n-zastępczy42Napinacz
l10n-zastępczy43Napinacz
l10n-zastępczy44Napinacz
l10n-zastępczy45Napinacz
l10n-zastępczy46Napinacz
l10n-zastępczy47Napinacz
l10n-zastępczy48Napinacz
l10n-zastępczy49Napinacz
l10n-zastępczy50Napinacz
l10n-zastępczy51Konstruktor kopiujący.
Napinacz
l10n-zastępczy52Przenieś konstruktora.
Po tej rozmowie
Całkowita liczba bajtów
l10n-zastępczy53Zwraca szacunkowe użycie pamięci tego tensora.
Niebezpieczna kopia z wewnętrznego
l10n-zastępczy54Podobnie 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ępczy55Zwróć 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ępczy56Zwróć 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ępczy57Zwróć 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ępczy58Zwróć 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ępczy59dim_size
l10n-zastępczy60Wygodny akcesorium do kształtu tensora.
ściemniać
l10n-zastępczy61Wygodny 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ępczy62Zwraca typ danych.
mieszkanie
l10n-zastępczy63Zwróć 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ępczy66Zwraca 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ępczy67flat_inner_outer_dims
l10n-zastępczy68Zwraca 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ępczy69flat_outer_dims
l10n-zastępczy70Zwraca 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ępczy71matryca
l10n-zastępczy72matryca
l10n-zastępczy73operator=
l10n-zastępczy74Przypisz operatora. Ten tensor współdzieli pamięć masową innych osób.
operator=
l10n-zastępczy75Przenieś operatora. Zobacz konstruktor przenoszenia, aby uzyskać szczegółowe informacje.
reinterpretuj_ostatni_wymiar
l10n-zastępczy76Zwróć 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ępczy77Zwróć 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ępczy79kształt
l10n-zastępczy80Zwraca kształt tensora.
w kształcie
l10n-zastępczy81w kształcie
l10n-zastępczy82napinacz
l10n-zastępczy83napinacz
l10n-zastępczy84tensor_data
l10n-zastępczy85Zwraca 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ępczy86unaligned_flat
l10n-zastępczy87unaligned_shaped
l10n-zastępczy88unaligned_shaped
l10n-zastępczy89vec
l10n-zastępczy90Zwróć 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ępczy93Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-04-20 UTC.