1.序列化
Torch提供4种高级方法来序列化或者反序列化任意Lua/Torch对象。这些方法都是从File对象抽象出来的,为了方便操作而创建。
前两种方法用来从文件序列化或者反序列化的:
torch.save(filename,object [, format])
[object] torch.load(filename [, format])
下面两个函数是从字符串中序列化或者反序列化的:
[str] torch.serialize(object [,format])
[object] torch.deserialize(str [,format])
序列化成文件可用于保存任意类型数据结构,共享之类的。序列化为字符串的好处在于数据结构可以保存在数据库中,或者第三方软件中。
下面详细讲解各个函数的用法。
1.1 torch.save(filename,object [, format])
把object对象写入文件filename中,format可选为ascii和binary,默认是binary。二进制类型是与平台相关的,但是很紧凑并且读写速度很快。ASCII类型与平台无关,可以跨平台共享。
-- arbitrary object:
obj = {
mat = torch.randn(10,10),
name = '10',
test = {
entry = 1
}
}
-- save to disk:
torch.save('test.dat', obj)
1.2 [object] torch.load(filename [, format])
从文件中读取对象。
-- given serialized object from section above, reload:
obj = torch.load('test.dat')
print(obj)
-- will print:
-- {[mat] = DoubleTensor - size: 10x10
-- [name] = string : "10"
-- [test] = table - size: 0}
1.3 [str] torch.serialize(object [,format])
将对象序列化为字符串(
-- arbitrary object:
obj = {
mat = torch.randn(10,10),
name = '10',
test = {
entry = 1
}
}
-- serialize:
str = torch.serialize(obj)
1.4 [object] torch.deserialize(str [,format])
从字符串中反序列化对象,默认仍然是binary的。
-- given serialized object from section above, deserialize:
obj = torch.deserialize(str)
print(obj)
-- will print:
-- {[mat] = DoubleTensor - size: 10x10
-- [name] = string : "10"
-- [test] = table - size: 0}