ceras
yet another deep learning engine
constant.hpp
Go to the documentation of this file.
1 #ifndef CONSTANT_HPP_INCLUDED_DLKJASLKJFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2 #define CONSTANT_HPP_INCLUDED_DLKJASLKJFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
3 
4 #include "./includes.hpp"
5 #include "./tensor.hpp"
6 #include "./utils/id.hpp"
7 #include "./utils/better_assert.hpp"
8 #include "./utils/enable_shared.hpp"
9 
10 namespace ceras
11 {
12 
20  template< Tensor Tsor >
21  struct constant : enable_id<constant<Tsor>, "Constant">
22  {
23  Tsor data_;
24 
25  constant( Tsor const& data ) : enable_id<constant<Tsor>, "Constant">{}, data_{data} {}
26 
27  void backward( auto ) const {}
28 
29  Tsor forward() const
30  {
31  return data_;
32  }
33 
34  auto shape() const
35  {
36  return data_.shape();
37  }
38  };
39 
40  template< typename T >
41  struct is_constant : std::false_type {};
42 
43  template< Tensor Tsor >
44  struct is_constant< constant< Tsor > > : std::true_type {};
45 
46  template< class T >
47  inline constexpr bool is_constant_v = is_constant<T>::value;
48 
49  template< typename T >
50  concept Constant = is_constant_v<T>;
51 
52 }//namespace ceras
53 
54 #endif//CONSTANT_HPP_INCLUDED_DLKJASLKJFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
55 
Definition: activation.hpp:12
constexpr bool is_constant_v
Definition: constant.hpp:47
concept Constant
Definition: constant.hpp:50
Creates a constant expression from a tensor-like object.
Definition: constant.hpp:22
Tsor data_
Definition: constant.hpp:23
void backward(auto) const
Definition: constant.hpp:27
constant(Tsor const &data)
Definition: constant.hpp:25
auto shape() const
Definition: constant.hpp:34
Tsor forward() const
Definition: constant.hpp:29
Definition: constant.hpp:41