Deep learning 如何在火炬上训练caffe模型

Deep learning 如何在火炬上训练caffe模型,deep-learning,caffe,torch,Deep Learning,Caffe,Torch,我使用将caffe模型加载到torch,示例显示 require 'caffe' net = caffe.Net('deploy.prototxt', 'bvlc_alexnet.caffemodel', 'test') input = torch.FloatTensor(10,3,227,227) output = net:forward(input) gradOutput = torch.FloatTensor(10,1000,1,1) gradInput = net:backward(i

我使用将caffe模型加载到torch,示例显示

require 'caffe'
net = caffe.Net('deploy.prototxt', 'bvlc_alexnet.caffemodel', 'test') 
input = torch.FloatTensor(10,3,227,227)
output = net:forward(input)
gradOutput = torch.FloatTensor(10,1000,1,1)
gradInput = net:backward(input, gradOutput)
但是,当我使用backward来训练网络时,无论训练多少次,输入相同的数据时,输出都不会改变。因此,如何训练caffe模型,提前感谢
添加:

很抱歉,我没有说清楚。我的代码如下:

caffenet = caffe.Net('test.prototxt','test2.caffemodel','train')
caffe_output = caffenet:forward(input)
local predParts=netPred:forward(caffe_output)
netPred:backward(caffe_output, gradPred)
caffenet:backward(input,g) 

netPred
是一个火炬网,
caffenet
是一个去除最后一层损耗的网。但是我设置了最后第二层
loss_weight=1
,控制台显示像这样的所有层
ip1需要反向计算。
,但是当我使用
向后时,我检查输出从未改变。即使我添加了丢失层,它也不起作用。

通常在caffe中,“部署”网络仅用于测试:也就是说,它不需要输入标签,也没有丢失。你需要“train”协议。很抱歉我没有说清楚。我的代码是这样的:
caffenet=caffe.Net('test.prototxt','test2.caffemodel','train')caffee\u输出=caffenet:forward(input)local predParts=netPred:forward(caffe\u output)netPred:backward(caffe\u output,graded)caffenet:backward(input,g)
netPred
是一个火炬网,
caffenet
是一个去除最后一层损耗的网。但是我设置了最后第二层
loss_weight=1
,控制台显示像这样的所有层
ip1都需要反向计算。
,但是当我使用
向后时,我检查输出从未改变。即使我添加了损耗层,它也不起作用。loss\u weight=1并不意味着你有损耗层。您需要输出标量损失值。请不要在注释中发布代码:无法清晰地读取。编辑您的帖子以反映您的评论通常在caffe中,“部署”网络仅用于测试:也就是说,它不需要输入标签,也没有损失。你需要“train”协议。很抱歉我没有说清楚。我的代码是这样的:
caffenet=caffe.Net('test.prototxt','test2.caffemodel','train')caffee\u输出=caffenet:forward(input)local predParts=netPred:forward(caffe\u output)netPred:backward(caffe\u output,graded)caffenet:backward(input,g)
netPred
是一个火炬网,
caffenet
是一个去除最后一层损耗的网。但是我设置了最后第二层
loss_weight=1
,控制台显示像这样的所有层
ip1都需要反向计算。
,但是当我使用
向后时,我检查输出从未改变。即使我添加了损耗层,它也不起作用。loss\u weight=1并不意味着你有损耗层。您需要输出标量损失值。请不要在注释中发布代码:无法清晰地读取。编辑您的帖子以反映您的评论