Torch7中函数addmv的大小不匹配 [英] Size mismatch in function addmv in Torch7

查看:113
本文介绍了Torch7中函数addmv的大小不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个小的Torch7/Lua脚本来创建和训练神经网络,但是我遇到了错误.有什么想法吗?

I'm working on a small Torch7/ Lua script to create and train a neural network, but I'm running into errors. Any ideas?

这是我的代码:

require 'dp'
require 'csvigo'
require 'nn'
--[[hyperparameters]]--
opt = {
    nHidden = 100, --number of hidden units
    learningRate = 0.1, --training learning rate
    momentum = 0.9, --momentum factor to use for training
    maxOutNorm = 1, --maximum norm allowed for output neuron weights
    batchSize = 128, --number of examples per mini-batch
    maxTries = 100, --maximum number of epochs without reduction in validation error.
    maxEpoch = 1 --maximum number of epochs of training
}

csv2tensor = require 'csv2tensor'
-- inputs, outputs = csv2tensor.load("/Users/robertgrzesik/NodeJS/csv_export.csv")
inputs = csv2tensor.load("/Users/robertgrzesik/NodeJS/csv_export.csv", {exclude={"positive", "negative", "neutral"}})
outputs = csv2tensor.load("/Users/robertgrzesik/NodeJS/csv_export.csv", {include={"positive", "negative", "neutral"}}) -- "positive", "negative", "neutral"
print("outputs: ", outputs)
print("inputs: ", inputs)

local dataset = {}

print("inputs:size(1)", inputs:size(1))

inputSize = inputs:size(1)
outputSize = outputs:size(1)

for i=1,inputSize do
  dataset[i] = {inputs[i], outputs[i]}
end

dataset.size = function(self)
  return inputSize
end

-- ======================================= --
--                 Create NN   
-- ======================================= --
print '[INFO] Creating NN..'
mlp = nn.Sequential();  -- make a multi-layer perceptron
inputs = inputSize; outputs = outputSize; HUs = 300; -- parameters
mlp:add(nn.Linear(inputs, HUs))
mlp:add(nn.Tanh())
mlp:add(nn.Linear(HUs, outputs))
-- ======================================= --
--           MSE and Training  
-- ======================================= --
print '[INFO] MSE and train NN..'
criterion = nn.MSECriterion()  
trainer = nn.StochasticGradient(mlp, criterion)
trainer.learningRate = 0.01
trainer:train(dataset)  

这是错误:

# StochasticGradient: training  
/Users/robertgrzesik/torch/install/bin/luajit: .../robertgrzesik/torch/install/share/lua/5.1/nn/Linear.lua:37: size mismatch
stack traceback:
    [C]: in function 'addmv'
    .../robertgrzesik/torch/install/share/lua/5.1/nn/Linear.lua:37: in function 'updateOutput'
    ...ertgrzesik/torch/install/share/lua/5.1/nn/Sequential.lua:25: in function 'forward'
    ...ik/torch/install/share/lua/5.1/nn/StochasticGradient.lua:35: in function 'train'
    /Users/robertgrzesik/Lua/async-master/tests/dp-test.lua:53: in main chunk
    [C]: in function 'dofile'
    ...esik/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:131: in main chunk
    [C]: at 0x01028bc780

这是我的数据示例:

positive,negative,basketball,neutral,the,be,and,of,a,in,to,have,it,I,for,that,he,you,with,on,do,this,they,at,who,if,her,people,take,your,like,our,new,because,woman,great,show,million,money,job,little,important,lose,include,rest,fight,perfect
0,0,0,1,3,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

基本上,我的目标是创建一个深层神经网络,将句子中所用单词的频率链接起来,并将其与用户联系起来,将其评定为正",负"或中性"(我的输出是二进制的).也请让我知道我的想法是否正确.

Basically my aim is to create a deep neural network linking the frequency of words used in a sentence and tie it to the user rating it as either "positive", "negative" or "neutral" (my outputs, which are binary). Please also let me know if my thinking is correct on this.

谢谢!

推荐答案

发现了问题!

问题是创建网络时我给出了错误的大小.我传递的是"inputs:size(1)",而不是"inputs:size(2)".解决方法

The issue was that I was giving the wrong sizes when creating the network. I was passing in "inputs:size(1)" instead of "inputs:size(2)". Here's the fix

mlp:add(nn.Linear(inputs:size(2), HUs))
mlp:add(nn.Tanh())
mlp:add(nn.Linear(HUs, outputs:size(2)))

感觉就像我慢慢开始了解Lua/Torch的窍门一样!得分

Feel like I'm slowly starting to get the hang of Lua/ Torch! Score

这篇关于Torch7中函数addmv的大小不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆