29 #include <initializer_list> 36 namespace tensor_init {
43 template <
typename T,
size_t D>
45 using type = std::initializer_list<
54 template <
typename T,
size_t D>
59 static constexpr
size_t value = 0;
70 static constexpr
size_t value(
const L& list) {
71 if (list.size() == 0) {
75 for (
const auto& value : list) {
78 "Input contains ragged nested sequences" 79 "(nested lists with unequal sizes or shapes).");
89 static constexpr
size_t value(
const L& list) {
94 template <
typename L,
size_t... D>
100 template <
typename L>
103 list, std::make_index_sequence<InitializerDim<L>::value>());
106 while (shape.size() > (last_dim + 1) && shape[last_dim] != 0) {
109 shape.resize(last_dim + 1);
113 template <
typename T,
typename L>
118 template <
typename T,
typename L>
119 void NestedCopy(T&& iter,
const std::initializer_list<L>& list) {
120 for (
const auto& value : list) {
125 template <
typename T,
size_t D>
Definition: TensorInit.h:44
static constexpr size_t value(const L &list)
Definition: TensorInit.h:89
std::vector< T > ToFlatVector(const SizeVector &shape, const tensor_init::NestedInitializerList< T, D > &nested_list)
Definition: TensorInit.h:126
std::initializer_list< typename NestedInitializerImpl< T, D - 1 >::type > type
Definition: TensorInit.h:46
SizeVector InitializerShape(const L &list, std::index_sequence< D... >)
Definition: TensorInit.h:95
Definition: TensorInit.h:58
Definition: SizeVector.h:79
static constexpr size_t value(const L &list)
Definition: TensorInit.h:70
Definition: TensorInit.h:68
typename NestedInitializerImpl< T, D >::type NestedInitializerList
Definition: TensorInit.h:55
SizeVector InferShape(const L &list)
Definition: TensorInit.h:101
int64_t NumElements() const
Definition: SizeVector.cpp:126
Definition: PinholeCameraIntrinsic.cpp:35
T type
Definition: TensorInit.h:51
void NestedCopy(T &&iter, const L &list)
Definition: TensorInit.h:114
#define LogError(...)
Definition: Logging.h:72