tensor_utilities.h
1
2#ifndef TENSORUTILITIES_H
3#define TENSORUTILITIES_H
4
5// System includes
6
7#include <algorithm>
8#include <fstream>
9#include <iostream>
10#include <limits>
11#include <math.h>
12#include <vector>
13#include <numeric>
14
15// OpenNN includes
16
17#include "config.h"
18
19#include "../eigen/Eigen/Dense"
20
21using namespace std;
22using namespace Eigen;
23
24namespace OpenNN
25{
26
27void initialize_sequential(Tensor<type, 1>&);
28
29void multiply_rows(Tensor<type, 2>&, const Tensor<type, 1>&);
30void divide_columns(Tensor<type, 2>&, const Tensor<type, 1>&);
31
32bool is_zero(const Tensor<type, 1>&);
33bool is_zero(const Tensor<type,1>&, const type&);
34bool is_constant(const Tensor<type, 1>&);
35
36bool is_equal(const Tensor<type, 2>&, const type&, const type& = type(0));
37
38bool are_equal(const Tensor<type, 1>&, const Tensor<type, 1>&, const type& = type(0));
39bool are_equal(const Tensor<type, 2>&, const Tensor<type, 2>&, const type& = type(0));
40
41bool is_false(const Tensor<bool, 1>&);
42
43bool is_binary(const Tensor<type, 2>&);
44
45void save_csv(const Tensor<type,2>&, const string&);
46
47Tensor<Index, 1> calculate_rank_greater(const Tensor<type, 1>&);
48Tensor<Index, 1> calculate_rank_less(const Tensor<type, 1>&);
49
50void scrub_missing_values(Tensor<type, 2>&, const type&);
51
52type l1_norm(const ThreadPoolDevice*, const Tensor<type, 1>&);
53void l1_norm_gradient(const ThreadPoolDevice*, const Tensor<type, 1>&, Tensor<type, 1>&);
54void l1_norm_hessian(const ThreadPoolDevice*, const Tensor<type, 1>&, Tensor<type, 2>&);
55
56type l2_norm(const ThreadPoolDevice*, const Tensor<type, 1>&);
57void l2_norm_gradient(const ThreadPoolDevice*, const Tensor<type, 1>&, Tensor<type, 1>&);
58void l2_norm_hessian(const ThreadPoolDevice*, const Tensor<type, 1>&, Tensor<type, 2>&);
59
60Tensor<type, 2> kronecker_product(const Tensor<type, 1>&, const Tensor<type, 1>&);
61
62void sum_diagonal(Tensor<type, 2>&, const type&);
63
64Tensor<type, 1> perform_Householder_QR_decomposition(const Tensor<type, 2>&, const Tensor<type, 1>&);
65
66void fill_submatrix(const Tensor<type, 2>& matrix,
67 const Tensor<Index, 1>& rows_indices,
68 const Tensor<Index, 1>& columns_indices, type* submatrix);
69
70Index count_NAN(const Tensor<type, 1>&);
71
72void check_size(const Tensor<type, 1>&, const Index&, const string&);
73
74void check_dimensions(const Tensor<type, 2>&, const Index&, const Index&, const string&);
75
76void check_columns_number(const Tensor<type, 2>&, const Index&, const string&);
77
78bool is_less_than(const Tensor<type, 1>&, const type&);
79
80
81Tensor<type, 2> assemble_vector_vector(const Tensor<type, 1>&, const Tensor<type, 1>&);
82Tensor<type, 2> assemble_vector_matrix(const Tensor<type, 1>&, const Tensor<type, 2>&);
83Tensor<type, 2> assemble_matrix_vector(const Tensor<type, 2>&, const Tensor<type, 1>&);
84Tensor<type, 2> assemble_matrix_matrix(const Tensor<type, 2>&, const Tensor<type, 2>&);
85
86}
87
88#endif
Extensions to the C++ standard library.
Definition: half.hpp:2325