1 #ifndef NRFLVKIAQLDTRLNHHBYUJJAMYCRCFKLQTDSKDQSALHQGURGGKBSIGGVWXBSKHQGPAUDLPUBBQ
2 #define NRFLVKIAQLDTRLNHHBYUJJAMYCRCFKLQTDSKDQSALHQGURGGKBSIGGVWXBSKHQGPAUDLPUBBQ
8 #include "./utils/singleton.hpp"
9 #include "./utils/debug.hpp"
10 #include "./utils/lzw.hpp"
11 #include "./utils/fmt.hpp"
16 namespace ceras_private
19 template< Tensor Tsor >
55 template<
typename Operation >
56 auto run( Operation& op )
const
63 template<
typename Operation >
64 void tap( Operation& op )
const
74 void serialize( std::string
const& file_path )
const
79 void save( std::string
const& file_path )
const
83 std::string
const& tmp_file_path = file_path + std::string{
".tmp"};
90 std::ifstream ifs{ tmp_file_path, std::ios_base::binary };
91 std::ofstream ofs( file_path, std::ios_base::binary );
92 lzw::compress( ifs, ofs );
97 std::remove( tmp_file_path.c_str() );
104 std::string
const& tmp_file_path = file_path + std::string{
".tmp"};
108 std::ifstream ifs( file_path, std::ios_base::binary );
109 std::ofstream ofs{ tmp_file_path, std::ios_base::binary };
110 lzw::decompress( ifs, ofs );
118 std::remove( tmp_file_path.c_str() );
123 std::ofstream ofs{ file_path };
124 better_assert( ofs.good(),
"failed to open file ", file_path );
144 std::ifstream ifs{ file_path };
145 better_assert( ifs.good(),
"failed to open file ", file_path );
148 std::vector<int> ids;
151 std::getline( ifs, str_ids );
152 std::stringstream ss( str_ids );
153 std::copy( std::istream_iterator<int>( ss ), std::istream_iterator<int>(), std::back_inserter( ids ) );
157 for (
auto id : ids )
160 better_assert( itor !=
variables_.end(),
"Error: unknown variable to load, the id is ",
id );
162 auto [_id, _var] = *itor;
177 singleton<session<Tsor>*>::instance() =
nullptr;
183 template< Tensor Tsor >
186 return singleton<ceras_private::session<Tsor>>::instance();
Definition: activation.hpp:12
ceras_private::session< Tsor > & get_default_session()
Definition: session.hpp:184
std::basic_istream< _CharT, _Traits > & read_tensor(std::basic_istream< _CharT, _Traits > &__is, tensor< _Tp, _Alloc > &__x)
Definition: tensor.hpp:1220
std::basic_ostream< _CharT, _Traits > & write_tensor(std::basic_ostream< _CharT, _Traits > &__os, tensor< _Tp, _Alloc > const &__x)
Definition: tensor.hpp:1254
Tsor copy(Tsor const &tsor)
Definition: tensor.hpp:908
Definition: session.hpp:21
variable_state< Tsor > variable_state_type
Definition: session.hpp:24
void deserialize(std::string const &file_path)
Definition: session.hpp:69
void serialize(std::string const &file_path) const
Definition: session.hpp:74
~session()
Definition: session.hpp:169
auto run(Operation &op) const
Definition: session.hpp:56
session & operator=(session const &)=delete
void save_original(std::string const &file_path) const
Definition: session.hpp:121
void rebind(place_holder_type &p_holder, Tsor const &value)
Definition: session.hpp:36
void bind(place_holder_type &p_holder, Tsor const &value)
Definition: session.hpp:41
variable< Tsor > variable_type
Definition: session.hpp:23
std::vector< place_holder_type > place_holders_
Definition: session.hpp:26
void tap(Operation &op) const
Definition: session.hpp:64
void remember(variable_type const &v)
Definition: session.hpp:47
void save(std::string const &file_path) const
Definition: session.hpp:79
session()
Definition: session.hpp:29
place_holder< Tsor > place_holder_type
Definition: session.hpp:22
void restore_original(std::string const &file_path)
Definition: session.hpp:142
std::map< int, variable_type > variables_
Definition: session.hpp:27
void restore(std::string const &file_path)
Definition: session.hpp:100
session(session const &)=delete
session(session &&)=default
session & operator=(session &&)=default
Definition: place_holder.hpp:24
void bind(Tsor data)
Definition: place_holder.hpp:43
Definition: variable.hpp:26
Definition: variable.hpp:45