在Torch / Lua中,加载保存的模型和使用Xavier权重初始化方法之间有什么区别?

时间:2016-03-15 21:11:46

标签: lua machine-learning neural-network deep-learning torch

我一直在与Torch和Lua合作开展人工神经网络项目。

我有时会使用命令torch.save()torch.load()将经过训练的模型保存到文件中并将其加载到我的脚本中。

最近,我在2010年一直在研究所谓的Xavier权重初始化方法originally developed by Xavier Glorot

我在torch-toolbox package中找到了这种权重初始化方法的实现。该示例包含以下代码:

-- design model 
require('nn') 
model = nn.Sequential() 
model:add(nn.SpatialConvolutionMM(3,4,5,5))

-- reset weights 
method = 'xavier' 
model_new = require('weight-init')(model, method)

我在Torch控制台中运行了这个示例,并尝试分析对象的内容,例如model和model_new。我看不出立刻的区别,所以我想知道:使用此Xavier weight-init模型权重初始化和经典的torch.load()命令有什么区别?

1 个答案:

答案 0 :(得分:1)

引用上述文档:

The weights and biases in the network model will be reset based on the method provided.

因此,weight-init 将网络中的所有权重重置到某个值(如果Xavier方法为math.sqrt(2/(fan_in + fan_out)(请参阅here))。< / p>

另一方面,torch.load()读取从预先训练的文件(使用torch.save()保存)中保存的权重。因此,除非你的权重在训练期间根本没有变化,否则如果你这样做:

weight-init() -> train -> torch.save() -> torch.load() 你应该看到其他结果而不仅仅是weight-init()。