MATLAB多入多出,样本超多我该怎么办?
情况是这样,我有一组数据,长度为15位,每位都可能是0、1、2当中的任何一个,但有些时候也有的位上会是3。当排布不同时,
例如:
2 2 2 2 2 1 2 2 2 2 2 2 2 2 2
我要输出两组数据
1 3 3 3 3 0 3 3 3 3 2 2 2 2 1
1 2 2 2 1 0 1 2 2 2 2 2 2 2 1
改变一下:
2 2 2 2 2 1 2 1 2 2 2 2 2 2 2
我要输出的就是
1 3 3 4 5 0 6 3 5 4 3 2 2 2 1
1 2 2 2 1 0 0 0 1 2 2 2 2 2 1
就是说输入值的大小和位置都会影响到输出值。这样的情况我能不能建立一个网络完成任务呢?
训练样本有3^5 + 3^6 + 3^7 …… + 3^14 个,这些样本也是全部的实际情况,就是说样本包括了全部可能。
因为我有一组长度较短标准的样本,所以可以计算出全部情况的其他样本,但是如果用模式识别来做或者给它们每个一个编号……那得出结果太慢太慢了,于是想到训练一个网络来解决这个问题,还请高人赐教一三!分不够可以添,其实就剩下分了…………
[最优解释]
俺不知道你想干嘛,俺只能从你的描述里大体判定你可能想是做一个hash表出来(或者是路由表)
整体上看到好像是个规则引擎
[其他解释]
[其他解释]
沉的真底啊!!!
[其他解释]
不不。被你抓到了。我主要的意思就是研究一下这种方法会不会比我现在的方式快、如果快能到什么程度、值不值得现在花费很多时间去更深入的研究多入多出网络和迭代学习并且自己去实现这些代码;因为自己不熟这方面的内容,所以才问;那么你能告诉我训练一个网络来识别和我现在的速度每秒可以识别440K个比,会是快还是慢吗?因为我对现在的速度不满意,才寻求其他解决方式…………我也问了一些地方,很多人也都很高手很不屑回答貌似。我可以退而求其次暂时去研究其他的细节如何实现如何优化,但是前提至少得让如你这样的高手给我一个较为可信的结论。
[其他解释]
有高手指导吗???没有关帖子了!重新优化了一下(建立了一个表,因为只有15位0、1、2、3,可以用每两位代表一位(00,01,10,11),用一个30位就可以保存了,所以用了integer做索引,用一个1<<20的数组保存可能用到的,当然全保存进去不可能,好像1<<28就烂了,30根本不可能,太大初始化也慢对提速也没多大作用,凑活吧),最不理想的情况能到从440K/S提到了520000/S,520K/S哎。一般都在2000K左右,最快的到3300K。。。就先这样吧,还有一个更大的整合和一个逻辑比较复杂的剪枝没做。。。
顶者有分!
[其他解释]
额,把整合做了,平均情况下,速度是600K/S。。因为又优化了一个基础结构,把类数组改成了基本类型数组,复制的时候可以直接copy了。。。
结贴哎。以后再考虑,其实这个速度已经达到同类软件中比较高的水平了,何况别的软件还是C写的。我要实现的是一个类似于哈希表的东西来表示一系列规则,然后用来判定各种情况下的有利形势,但是我这个基于自身规则特点可以用一些方式加快很多速度,把N范围内的寻址变为直接寻址了,速度也不比C的慢太多了,话说VB.NET的数组本身就有不少检测和其他的代码,再说以后我肯定要用C重写的。