以张量为输入的 MLP 构造
Posted
技术标签:
【中文标题】以张量为输入的 MLP 构造【英文标题】:MLP Construction with a Tesnor as input 【发布时间】:2019-12-02 15:01:00 【问题描述】:我正在创建一个简单的神经网络,其中包含一个用于分类的隐藏层。 我的输入数据集已准备好并保存在 .t7 文件中。
input =
data : DoubleTensor - size: 1400x1002x3
label : DoubleTensor - size: 1400
这是我创建的 My MLP 的代码
------------------------Neural Netwrok-------------------------
net = nn.Sequential()
inputs= "?" ; outputs=70; HUs= 25 --parameters & the problem is in my input "?"
--that i am asking for.what shall i write there ? at the time i have the input
--described above.
net:add( nn.Linear(inputs, HUs) )
net:add(nn.ReLU()) -- Activation function
net:add( nn.Linear(HUs, outputs) ) -- 70 output : classes of mpeg7
----------------------------------------------------------------------
print('NN : ' .. net:__tostring())
-------------------------Loss Function-------------------------
criterion=nn.ClassNLLCriterion() --Negative Log-Likelihood (NLL) Criterion
print('Duree NN : ' .. os.time())
---------------------- Loading Data ---------------------------------
trainset=torch.load('TrainSetTable.t7')
------------------------TRAINING MY NETWORK----------------------
trainer=nn.StochasticGradient(net,criterion)
trainer.learningRate = 0.0005
trainer.maxIteration = 10
print('------------------------------------------------------------------------')
print('training epoch : ' .. trainer.maxIteration .. ', learning rate : ' .. trainer.learningRate .. ' , learning rate decay : ' .. trainer.learningRateDecay)
print('------------------------------------------------------------------------')
trainer:train(trainset)
print('Duree Training : ' .. os.time())
net=net:double()
net:clearState()
torch.save('TrainedNN/NN_Mpeg7_10Epoch.t7',net)
print('Duree sauvegarde : ' .. os.time())
我怎么能说我的神经网络的输入是张量?
input.data (All) 是一个大小的张量:1400x1002x3 包含我的形状:我正在处理包含 1400 个形状的 mpeg7 数据集,每个形状对我来说都是 1002*3 矩阵。 input.label 是一个大小为 1400 的张量,包含每个形状的相应标签。
我是 torch 和 lua 的新手。但在我看到的上面的代码示例中,数据在构建后被导入并馈送到 NN。那么在加载数据之前我应该为NN写什么作为输入?如何让它“理解”稍后将向它提供这样的数据:
trainset=torch.load('TrainSetTable.t7')
trainset.data=trainset.data:view(980,1,1002,3)
One_train_contour = DoubleTensor - 1x1002x3
从总共
data(train_contours) : DoubleTensor - 980x1002x3
label : DoubleTensor - size: 1400
我有
data(test_contours) : DoubleTensor - 420x1002x3
label : DoubleTensor - size: 1400
我建议在该行中写什么 输入=“?”
【问题讨论】:
【参考方案1】:在输入任何数据之前定义神经网络输入层很重要。 请注意,NN 的输入与样本数量(在分类网络中)无关,并且完全取决于每个数据样本的配置。
我不熟悉 mpeg,但如果每个 mpeg 样本的尺寸为 32x32 那么您的输入应该是 1024(与 MNIST 数据集一样)
来源:http://yann.lecun.com/exdb/mnist/
【讨论】:
以上是关于以张量为输入的 MLP 构造的主要内容,如果未能解决你的问题,请参考以下文章