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)
Tworzy Tensor danego type i 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)
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)
Kopiuj konstruktor.
Tensor ( Tensor && other)
Przesuń konstruktor.
~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)
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
string
Czytelne dla człowieka podsumowanie tensora odpowiednie 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 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.
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
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 .
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
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.
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)
Przypisz operatora. Ten tensor współużytkuje bazową pamięć innej osoby.
operator= ( Tensor && other)
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
Zwróć dane Tensora 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 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).

Konkretnie:

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 wartość true , jeśli other.shape() ma taką samą liczbę elementów danego shape .

Ciąg debugowania

string DebugString(
  int num_values
) const 

Czytelne dla człowieka podsumowanie tensora odpowiednie do debugowania.

Ciąg debugowania

string DebugString() const 

DeviceSafeDebugString

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.

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 <= dim0_start < dim_size(0)

Podsumuj wartość

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 bufora bazowego.

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
)

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

Kopiuj konstruktor.

Napinacz

 Tensor(
  Tensor && other
)

Przesuń konstruktor.

Po tym telefonie można go bezpiecznie zniszczyć i można do niego przypisać, ale inne wywołania (np. manipulacja kształtem) są nieważne.

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.

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({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 Tensora oprócz ostatniego NDIMS-1 do pierwszego wymiaru wyniku.

Jeśli NDIMS > dims() , wówczas dodane zostaną wymiary wiodące o rozmiarze 1, aby uzyskać rangę wyjściową 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 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()

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

Jeśli NDIMS > dims() , wówczas końcowe wymiary o rozmiarze 1 zostaną dodane, aby uzyskać rangę wyjściową 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ół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()

Zwróć dane Tensora 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.

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:

l10n-placeholder88

l10n-placeholder89

Stałe wersje wszystkich powyższych metod.

~Tensor

l10n-placeholder90