问题的起源在于,使用FFT进行了快速傅里叶变换,然后想将数据送入神经网络进行识别。但是读取数据时候却出现了问题。
这道题的本质原因在于傅里叶变换后得到的数据为复数,然后系统没有识别出来,于是报错:字符串不能转化为浮点型。报错图片如下
解决方案 (1)为函数增加了数据类型不行。
X = np.loadtxt(datatxt, dtype = complex)
报错如下:
Exception has occurred: ValueError
complex() arg is a malformed string
(2)使用genfromtxt函数仍旧不行,数据读不出来。
X = np.genfromtxt(datatxt, delimiter='t', dtype=np.complex128)
虽然不报错,但是读出来的数据都是空的:
但是真实的数据是这样的
(3)不保存中间数据不要保存FFT生成的数据到txt里,直接送入到CNN即可。
因为数据写入txt的时候,需要强制转换成str格式,但是在使用loadtxt加载这堆复数数据的时候,就出现了问题。
于是我想如果取消中间数据,避免数据转换的错误,是不是就可以直接计算出结果呢?
答案是可以的。
除此之外,进行数据预处理的时候也需要根据个人的数据情况看看是否需要取消预处理。
然后这个复数导入问题就从计算过程中解决了。中间数据如果能够直接使用,就不必再单独保存起来。
仅供参考。
我看github讨论区有大牛说是python版本问题,新版本可以直接导入,这个如果不得不进行从txt导入数据时候可以试着更新一下。
https://github.com/numpy/numpy/pull/5666
这位重写了FFT函数和特征提取的算法,仅供参考。
https://github.com/jindongwang/activityrecognition/issues/4
这篇是傅里叶变换
FFT快速傅里叶变换的python实现 - 思念殇千寻 - 博客园
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)