我目前使用的是火炬,只是试图让一个简单的神经网络程序运行。我的每个输入都有3个属性,输出应该是数字1和7之间的分类。我已经从CSV文件中提取了我的数据,并将它放入了2个Tensors(1与输入和1与输出)。数据是这种格式。使用Torch的ClassNLLCriterion
**Data**
1914 1993 2386
1909 1990 2300
.....
1912 1989 2200
[torch.DoubleTensor of size 99999x3]
**Class**
1
1
2
.....
7
[torch.DoubleTensor of size 99999]
对于我使用训练网络模型,我只是有
model = nn.Sequential()
model:add(nn.Linear(3, 7))
model:add(nn.LogSoftMax())
criterion = nn.ClassNLLCriterion()
这是我对网络进行训练
for int i = 1, 10 do
prediction = model:forward(data)
loss = criterion:forward(prediction, class)
model:zeroGradParameters()
grad = criterion:backward(prediction, class)
model:backward(data, grad)
model:updateParameters(.1)
end
在我的测试代码数据张量,我用格式化测试数据(张量为99999x3)的格式对其进行格式化。我希望程序给我一个预测,当我运行这一行时,分类是什么。
print (model:forward(test_data))
不过,我正在负数(这不应该与ClassNLLCriterion发生?)和概率之和不增加0.我的疑问是,我有两种格式不正确的数据或我无法正确执行培训过程。如果有人能帮我弄清楚问题是什么,我会非常感激。
谢谢!