diff options
Diffstat (limited to 'nerv/io/init.lua')
-rw-r--r-- | nerv/io/init.lua | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/nerv/io/init.lua b/nerv/io/init.lua new file mode 100644 index 0000000..647ff93 --- /dev/null +++ b/nerv/io/init.lua @@ -0,0 +1,55 @@ +function nerv.ChunkFile:write_chunkdata(metadata, writer) + if type(metadata) ~= "table" then + nerv.error("metadata should be a Lua table") + return + end + return self:_write_chunkdata(table.tostring(metadata), writer) +end + +function nerv.ChunkFile:write_chunk(chunk) + local id = chunk.id + local type = chunk.__typename + if id == nil then + nerv.error("id of chunk %s must be specified", type) + end + self:write_chunkdata({id = id, + type = type, + info = chunk:get_info()}, chunk) +end + +function nerv.ChunkFile:read_chunk(id, global_conf) + if self.metadata == nil then + nerv.error("wrong file opening mode") + end + local metadata = self.metadata[id] + if metadata == nil then + nerv.error("chunk with id %s does not exist", id) + end + local chunk_type = nerv.get_type(metadata.type) + local chunk = chunk_type(id, global_conf) + chunk:set_info(metadata.info) + chunk:read(self:get_chunkdata(id)) + return chunk +end + +local DataReader = nerv.class("nerv.DataReader") + +function DataReader:__init(global_conf, reader_conf) + nerv.error_method_not_implemented() +end + +function DataReader:get_data() + nerv.error_method_not_implemented() +end + +local DataBuffer = nerv.class("nerv.DataBuffer") + +function DataBuffer:__init(global_conf, buffer_conf) + nerv.error_method_not_implemented() +end + +function DataBuffer:get_batch() + nerv.error_method_not_implemented() +end + +nerv.include('sgd_buffer.lua') |