przepływ tensorowy:: Napinacz
#include <tensor.h>
Reprezentuje n-wymiarową tablicę wartości.
Streszczenie
Konstruktory i destruktory | |
---|---|
Tensor () Tworzy jednowymiarowy, 0-elementowy tensor zmiennoprzecinkowy. | |
Tensor (DataType type, const TensorShape & shape) | |
Tensor (Allocator *a, DataType type, const TensorShape & shape) Tworzy tensor z type danych wejściowych i shape , używając alokatora a do alokacji bufora bazowego. | |
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr) Tworzy tensor z type danych wejściowych i shape , używając alokatora a i określonego „allocation_attr” w celu alokacji bufora bazowego. | |
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf) Tworzy tensor z wejściowym typem danych, kształtem i bufem. | |
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) Kopiuj konstruktor. | |
Tensor ( Tensor && other) Przesuń konstruktor. | |
Tensor (T *t) | |
~Tensor () |
Funkcje publiczne | |
---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Wypełnia proto *this zawartością tensora. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Status Skopiuj drugi tensor do tego tensora, zmień jego kształt i ponownie zinterpretuj typ danych bufora. |
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT | bool Skopiuj drugi tensor do tego tensora i zmień jego kształt. |
DebugString (int num_values) const | std::string Czytelne dla człowieka podsumowanie tensora odpowiednie do debugowania. |
DebugString () const | std::string |
DeviceSafeDebugString () const | std::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 wartość true, jeśli 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 akcesor dla 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 podkategorię z tego tensora wzdłuż pierwszego wymiaru. |
SummarizeValue (int64 max_entries, bool print_v2) const | std::string Renderuj pierwsze wartości max_entries z *this w łańcuch. |
TotalBytes () const | size_t Zwraca szacowane użycie pamięci przez tensor. |
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape) | void Podobnie jak BitcastFrom, ale CHECK kończy się niepowodzeniem, jeśli nie są spełnione żadne warunki wstępne. |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor Zwróć dane tensora do Eigen::Tensor z nowym kształtem określonym w new_sizes i rzuć 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 rzuć na nowy dtype T . |
bit_casted_tensor () | TTypes< T, NDIMS >:: Tensor Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale bitowo rzutowanym na określony dtype T . |
bit_casted_tensor () const | TTypes< T, NDIMS >::ConstTensor Zwróć dane tensora do Eigen::Tensor o tym samym rozmiarze, ale bitowo rzutowanym na określony dtype T . |
data () const | void * |
dim_size (int d) const | int64 Wygodny akcesor dla kształtu tensora. |
dims () const | int Wygodny akcesor dla 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 Tensora 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 Tensora 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ółużytkuje bazową pamięć innej osoby. |
operator= ( Tensor && other) | Tensor & Przesuń operatora. Aby uzyskać szczegółowe informacje, zobacz konstruktor przenoszenia. |
reinterpret_last_dimension () | TTypes< T, NDIMS >:: Tensor Zwróć dane tensora do Eigen::Tensor z elementami ostatniego wymiaru przekonwertowanymi na pojedyncze elementy większego typu. |
reinterpret_last_dimension () const | TTypes< T, NDIMS >::ConstTensor Zwróć dane tensora do Eigen::Tensor z elementami ostatniego 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 bufor bieżącego tensora. |
unaligned_flat () | TTypes< T >::UnalignedFlat |
unaligned_flat () const | TTypes< T >::UnalignedConstFlat |
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >::UnalignedTensor |
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::UnalignedConstTensor |
vec () | TTypes< T >::Vec Zwróć dane tensora jako Eigen::Tensor z typem i rozmiarami tego Tensor . |
vec () const | TTypes< T >::ConstVec Stałe wersje wszystkich powyższych metod. |
Funkcje publiczne
Przydzielone bajty
size_t AllocatedBytes() const
Jako ProtoField
void AsProtoField( TensorProto *proto ) const
Wypełnia proto
*this
zawartością tensora.
AsProtoField()
wypełnia powtarzane pole dla proto.dtype()
, podczas gdy AsProtoTensorContent()
koduje zawartość proto.tensor_content()
w zwartej formie.
Zawartość AsProtoTensor
void AsProtoTensorContent( TensorProto *proto ) const
BitcastOd
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Skopiuj drugi tensor do tego tensora, zmień jego kształt i ponownie zinterpretuj typ danych bufora.
Jeśli zostanie zwrócony Status::OK(), oba tensory korzystają teraz z tej samej podstawowej pamięci.
To wywołanie wymaga, aby other
tensor oraz dany typ i kształt były „kompatybilne” (tj. zajmowały tę samą liczbę bajtów).
Swoiście:
kształt.num_elements() * DataTypeSize(typ)
musi być równe
other.num_elements() * DataTypeSize(other.dtype())
Dodatkowo funkcja ta wymaga:
- DataTypeSize(other.dtype()) != 0
- TypDanychRozmiar(typ) != 0
Jeśli którykolwiek z wymagań nie jest spełniony, 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 zmień jego kształt.
Ten tensor współużytkuje bazową pamięć innej osoby. Zwraca true
, jeśli other.shape()
ma taką samą liczbę elementów danego shape
.
Ciąg debugowania
std::string DebugString( int num_values ) const
Czytelne dla człowieka podsumowanie tensora odpowiednie do debugowania.
Ciąg debugowania
std::string DebugString() const
DeviceSafeDebugString
std::string DeviceSafeDebugString() const
Opis wypełnienia
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 analiza się powiedzie. Jeśli analiza nie powiedzie się, stan *this
pozostaje niezmieniony.
Od Proto
bool FromProto( Allocator *a, const TensorProto & other ) TF_MUST_USE_RESULT
Jest wyrównany
bool IsAligned() const
Zwraca wartość true, jeśli tensor jest wyrównany.
Jest zainicjowany
bool IsInitialized() const
Jeśli to konieczne, czy Tensor został zainicjowany?
Tensory elementów zerowych są zawsze uważane za zainicjowane, nawet jeśli nigdy nie zostały do nich przypisane i nie mają przydzielonej pamięci.
Jest taki sam rozmiar
bool IsSameSize( const Tensor & b ) const
Liczba elementów
int64 NumElements() const
Wygodny akcesor dla kształtu tensora.
RefCountIsOne
bool RefCountIsOne() const
UdziałyBufferWith
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 return[i, ...] == this[dim0_start + i, ...]. Zwrócony tensor dzieli podstawowy bufor tensora z tym tensorem.
UWAGA: Zwrócony tensor może nie spełniać tych samych wymagań wyrównania co ten tensor, w zależności od kształtu. Osoba wywołująca musi sprawdzić wyrównanie zwróconego tensora przed wywołaniem pewnych metod, które wymagają wyrównania (np. flat()
, tensor()
).
UWAGA: W przypadku zasilania z tensorem N-wymiarowym metoda ta zwraca tensor również z N wymiarami. Jeśli chcesz wybrać podtensor, zobacz SubSlice.
WYMAGA: dims()
>= 1 WYMAGA: 0 <= dim0_start <= dim0_limit <= dim_size(0)
Podkawałek
Tensor SubSlice( int64 index ) const
Wybierz podkategorię z tego tensora wzdłuż pierwszego wymiaru.
W przypadku zasilania z tensorem N-wymiarowym metoda ta zwraca tensor o wymiarach N-1, gdzie zwrócony tensor jest podkategorią tensora wejściowego wzdłuż pierwszego wymiaru. Wymiary N-1 zwróconego tensora są ostatnimi wymiarami N-1 tensora wejściowego.
UWAGA: Zwrócony tensor może nie spełniać tych samych wymagań wyrównania co ten tensor, w zależności od kształtu. Osoba wywołująca musi sprawdzić wyrównanie zwróconego tensora przed wywołaniem pewnych metod, które wymagają wyrównania (np. flat()
, tensor()
).
WYMAGA: dims()
>= 1 WYMAGA: 0 <= index < dim_size(0)
Podsumuj wartość
std::string SummarizeValue( int64 max_entries, bool print_v2 ) const
Renderuj pierwsze wartości max_entries
z *this
w łańcuch.
Napinacz
Tensor()
Tworzy jednowymiarowy, 0-elementowy tensor zmiennoprzecinkowy.
Zwrócony Tensor nie jest skalarem (kształt {}), lecz pustym jednowymiarowym Tensorem (kształt {0}, NumElements() == 0). Ponieważ nie ma żadnych elementów, nie trzeba mu przypisywać wartości i jest domyślnie inicjowany ( 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 danego type
i shape
.
Jeśli LogMemory::IsEnabled() alokacja jest rejestrowana jako pochodząca z nieznanego jądra i kroku. Wywoływanie konstruktora Tensor bezpośrednio z 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
danych wejściowych i shape
, używając alokatora a
do alokacji bufora bazowego.
Jeśli LogMemory::IsEnabled() alokacja jest rejestrowana jako pochodząca z nieznanego jądra i kroku. Wywoływanie konstruktora Tensor bezpośrednio z Op jest przestarzałe: użyj metod OpKernelConstruction/OpKernelContext allocate_*, aby przydzielić nowy tensor, który rejestruje jądro i krok.
a
przetrwać czas życia tego Tensora .
Napinacz
Tensor( Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr )
Tworzy tensor z type
danych wejściowych i shape
, używając alokatora a
i określonego „allocation_attr” w celu alokacji podstawowego buforu.
Jeśli jądro i krok są znane, alokacja_attr.allocation_will_be_logged powinna być ustawiona na true, a LogMemory::RecordTensorAllocation powinna zostać wywołana po skonstruowaniu tensora. Wywoływanie konstruktora Tensor bezpośrednio z Op jest przestarzałe: użyj metod OpKernelConstruction/OpKernelContext allocate_*, aby przydzielić nowy tensor, który rejestruje jądro i krok.
a
przetrwać czas życia tego Tensora .
Napinacz
Tensor( DataType type, const TensorShape & shape, TensorBuffer *buf )
Tworzy tensor z wejściowym typem danych, kształtem i bufem.
Uzyskuje ref na buf, 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 , a IsInitialized() zwraca True. Aby uzyskać szczegółowe informacje, zobacz dokumentację Tensor() .
Napinacz
Tensor( float scalar_value )
Napinacz
Tensor( double scalar_value )
Napinacz
Tensor( int32 scalar_value )
Napinacz
Tensor( uint32 scalar_value )
Napinacz
Tensor( uint16 scalar_value )
Napinacz
Tensor( uint8 scalar_value )
Napinacz
Tensor( int16 scalar_value )
Napinacz
Tensor( int8 scalar_value )
Napinacz
Tensor( tstring scalar_value )
Napinacz
Tensor( complex64 scalar_value )
Napinacz
Tensor( complex128 scalar_value )
Napinacz
Tensor( int64 scalar_value )
Napinacz
Tensor( uint64 scalar_value )
Napinacz
Tensor( bool scalar_value )
Napinacz
Tensor( qint8 scalar_value )
Napinacz
Tensor( quint8 scalar_value )
Napinacz
Tensor( qint16 scalar_value )
Napinacz
Tensor( quint16 scalar_value )
Napinacz
Tensor( qint32 scalar_value )
Napinacz
Tensor( bfloat16 scalar_value )
Napinacz
Tensor( Eigen::half scalar_value )
Napinacz
Tensor( ResourceHandle scalar_value )
Napinacz
Tensor( const char *scalar_value )
Napinacz
Tensor( Tensor && other )
Przenieś konstruktor.
Po tym wezwaniu
Napinacz
Tensor( T *t )=delete
Całkowita liczba bajtów
size_t TotalBytes() const
Zwraca szacowane użycie pamięci przez tensor.
UnsafeCopyFromInternal
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Podobnie jak BitcastFrom, ale CHECK kończy się niepowodzeniem, jeśli nie są spełnione żadne warunki wstępne.
Przestarzałe. Zamiast tego użyj BitcastFrom i sprawdź zwrócony status.
bit_casted_shape
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 rzuć na nowy dtype T
.
Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolona transmisja bitów jest jedyną różnicą w stosunku do shaped()
.
bit_casted_shape
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 rzuć na nowy dtype T
.
Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. Dozwolona transmisja bitów jest jedyną różnicą 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 bitowo rzutowanym na określony dtype T
.
Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo, co tensor()
, z tą różnicą, że dozwolone jest przesyłanie bitów.
bit_casted_tensor
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Zwróć dane tensora do Eigen::Tensor
o tym samym rozmiarze, ale bitowo rzutowanym na określony dtype T
.
Korzystanie z transmisji bitowej jest przydatne w przypadku operacji przenoszenia i kopiowania. UWAGA: jest to to samo, co tensor()
, z tą różnicą, że dozwolone jest przesyłanie bitów.
dane
void * data() const
dim_size
int64 dim_size( int d ) const
Wygodny akcesor dla kształtu tensora.
przyciemnia się
int dims() const
Wygodny akcesor dla kształtu tensora.
W przypadku wszystkich akcesorów kształtu zobacz komentarze dotyczące odpowiednich metod TensorShape
w tensor_shape.h
.
typ
DataType dtype() const
Zwraca typ danych.
płaski
TTypes< T >::Flat flat()
Zwróć dane tensora jako Eigen::Tensor
typu danych i określonego kształtu.
Metody te umożliwiają dostęp do danych o wybranych wymiarach i rozmiarach. Aby je wywołać, nie musisz znać liczby wymiarów Tensora . Jednakże CHECK
, czy typ jest zgodny, a wymagane 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<T, 2>({4, 15}); // CHECK fails, bad num elements: auto outer = my_ten.shaped<T, 2>({4, 8}); // 3D Eigen::Tensor 6 x 5 x 2: auto weird = my_ten.shaped<T, 3>({6, 5, 2}); // CHECK fails, type mismatch: auto bad = my_ten.flat ();
flat
TTypes< T >::ConstFlat flat() const
flat_inner_dims
TTypes< T, NDIMS >::Tensor flat_inner_dims()
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 Tensora w pierwszy wymiar wyniku i wymiary Tensora ostatnich dims() - „begin” – NDIMS w ostatni wymiar wynik.
Jeśli „początek” < 0, to |„początek”| zostaną dodane wymiary wiodące rozmiaru 1. Jeśli „begin” + NDIMS > dims() to „begin” + NDIMS - zostaną dodane końcowe wymiary dims() 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ółużytkuje bazową pamięć innej osoby.
operator=
Tensor & operator=( Tensor && other )
Przesuń operatora. Aby uzyskać szczegółowe informacje, zobacz konstruktor przenoszenia.
reinterpretuj_ostatni_wymiar
TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()
Zwróć dane tensora do Eigen::Tensor
z elementami ostatniego wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory int8 NCHW_VECT_C jako tensory NCHW int32. Sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * num 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 elementami ostatniego wymiaru przekonwertowanymi na pojedyncze elementy większego typu.
Na przykład jest to przydatne w przypadku jąder, które mogą traktować tensory int8 NCHW_VECT_C jako tensory NCHW int32. Sizeof(T) powinien być równy rozmiarowi oryginalnego typu elementu * num 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.
ukształtowany
TTypes< T, NDIMS >::Tensor shaped( gtl::ArraySlice< int64 > new_sizes )
ukształtowany
TTypes< T, NDIMS >::ConstTensor shaped( gtl::ArraySlice< int64 > new_sizes ) const
napinacz
TTypes< T, NDIMS >::Tensor tensor()
napinacz
TTypes< T, NDIMS >::ConstTensor tensor() const
dane_tensora
StringPiece tensor_data() const
Zwraca StringPiece mapujący bufor bieżącego tensora.
Zwrócony StringPiece może wskazywać lokalizację pamięci na urządzeniach, do których procesor nie może adresować bezpośrednio.
UWAGA: Bazowy bufor tensorowy jest przeliczany, więc czas życia zawartości mapowanej przez StringPiece odpowiada czasowi życia bufora; osoby wywołujące powinny zadbać o to, aby bufor nie uległ zniszczeniu, gdy StringPiece jest nadal używany.
WYMAGA: DataTypeCanUseMemcpy(dtype()) .
niewyrównane_płaskie
TTypes< T >::UnalignedFlat unaligned_flat()
niewyrównane_płaskie
TTypes< T >::UnalignedConstFlat unaligned_flat() const
niewyrównany_kształt
TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes )
niewyrównany_kształt
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 rozmiarami tego Tensora.
Użyj tych metod, jeśli znasz typ danych i liczbę wymiarów Tensora i chcesz, aby Eigen::Tensor był automatycznie dopasowywany do rozmiarów Tensora. Kontrola implementacji kończy się niepowodzeniem, jeśli typ lub rozmiar są niezgodne.
Przykład:
typedef float T; Tensor my_mat(...built with Shape{rows: 3, cols: 5}...); auto mat = my_mat.matrix(); // 2D Eigen::Tensor, 3 x 5. auto mat = my_mat.tensor<T, 2>(); // 2D Eigen::Tensor, 3 x 5. auto vec = my_mat.vec (); // CHECK fails as my_mat is 2D. auto vec = my_mat.tensor<T, 3>(); // CHECK fails as my_mat is 2D. auto mat = my_mat.matrix ();// CHECK fails as type mismatch.
vec
TTypes< T >::ConstVec vec() const
Stałe wersje wszystkich powyższych metod.
~Tensor
~Tensor()