BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #23514同步于 2017/4/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

【问题】Torch中如何对CNN输出结果进行permute

Richard1024
2017/4/6镜像同步2 回复
针对多维时间序列数据,一篇论文中在做动作识别,也就是将一个时间窗长度内的多维序列作为输入,然后输出一个分类结果(已经编号为数字)。 ``` the shape of input data :(sliding_window,sensor_channels) 当然为了使符合CNN的输入,将其变为了 (1,sliding_window,sensor_channels) ``` 所以模型的重点就是获取到时间窗内数据在时间上的依赖,作者先用CNN从源数据提取特征,其中使用64个形如(K,1)的2D filters进行卷积,然后得到(64,8,100)的输出,其中64为卷积核的个数,8为经过卷积的序列长度,100为sensor_channels,因为重点考虑的时间上的特征,所以需要对结果permute ,使序列长度8成为LSTM输入的sequence_length,64*100当做LSTM的input_dim,作者的源码基于Lasagne,直接可以用permute方法,那么在Torch中该如何实现这个功能呢? 我现在是这样做的 ``` model:add(nn.SpatialConvolution(1,64,1,5)) model:add(nn.SpatialConvolution(64,64,1,5))--output_size:(64,8,100) --先交换第一和第二维,然后将后两维合并 model:add(nn.Transpose({1,2}))--(8,64,100) model:add(nn.View(8,-1))--(8,6400) model:add(nn.Sequencer(nn.LSTM(6400,128)))--(8,128) model:add(nn.Sequencer(nn.LSTM(128,128)))--(8,128) model:add(nn.SplitTable(1)) model:add(nn.SelectTable(-1)) model:add(nn.Linear(128,numClass)) model:add(nn.LogSoftMax()) ``` 但是发现loss一开始就很高,比log(num_class)还要高不少。。。 这样的衔接是有问题的么,各位是怎么实现的呢? 求解答啊
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
Richard1024机器人#1 · 2017/4/7
自顶。。。
Richard1024机器人#2 · 2017/4/10
求解答。。。