Lua torch只需将最后一个输出构建为前一层的输出倍增
我的网络有N层,我希望最后一层简单地构造最后一个输出,就像前面几层的输出乘法一样,如下所示。假设我的N-1层有一个3-d输出,最后一层有一个2-d输出。最后一个_输出[1]=上一个_输出[1]*上一个_输出[2],最后一个_输出[2]=上一个_输出[3]。我想在这个2-d最后的输出上使用CrossEntropyCriterion。现在,我通过构造N-1网络模型来实现这一点,并得到如下最后输出:Lua torch只需将最后一个输出构建为前一层的输出倍增,lua,neural-network,torch,cudnn,Lua,Neural Network,Torch,Cudnn,我的网络有N层,我希望最后一层简单地构造最后一个输出,就像前面几层的输出乘法一样,如下所示。假设我的N-1层有一个3-d输出,最后一层有一个2-d输出。最后一个_输出[1]=上一个_输出[1]*上一个_输出[2],最后一个_输出[2]=上一个_输出[3]。我想在这个2-d最后的输出上使用CrossEntropyCriterion。现在,我通过构造N-1网络模型来实现这一点,并得到如下最后输出: local last_output = torch.ones(previous_output:size
local last_output = torch.ones(previous_output:size()[1], 2)
last_output[{{}, {1}}] = torch.cmul(previous_output[{{},{1}}], previous_output[{{},{2}}])
last_output[{{}, {2}}] = previous_output[{{}, {3}}]
因此,最后一层不在模型中,只需运行
loss = criterion:forward(last_output, target)
发生错误。
有什么技巧可以达到这个目的吗?最好的方法是编写一个自定义层。有关详细信息,请参阅。发生错误没有多大帮助。请阅读并改进您的帖子