Python 使用什么方法学习信号数据中的特定区域

Python 使用什么方法学习信号数据中的特定区域,python,keras,Python,Keras,我得到了以下一组数据: 纳米孔信号数据列表,例如[88.2、92.5、…101.5] 一个数字值,说明特定材料在信号数据中的位置,例如5=>该特定物质位于相应信号数据的第5个索引中 我尝试使用Keras实现机器学习,使用双向LSTM模型来学习信号数据和数值索引值之间的模式 我在网上读过一些示例代码,并试图使用它们,但我面临一些问题。甚至不确定我的方法是否合适 因为我读过的大多数代码的输入和标签的尺寸都是相等的,所以我制作了一个零数组,它与信号数据的长度相匹配,并将1作为数值的索引值 e.g.

我得到了以下一组数据:

  • 纳米孔信号数据列表,例如
    [88.2、92.5、…101.5]
  • 一个数字值,说明特定材料在信号数据中的位置,例如5=>该特定物质位于相应信号数据的第5个索引中
我尝试使用
Keras
实现机器学习,使用双向
LSTM
模型来学习信号数据和数值索引值之间的模式

我在网上读过一些示例代码,并试图使用它们,但我面临一些问题。甚至不确定我的方法是否合适

因为我读过的大多数代码的输入和标签的尺寸都是相等的,所以我制作了一个零数组,它与信号数据的长度相匹配,并将1作为数值的索引值

e.g. Signal = [1, 2, 4, 5]
     Label = [0, 0, 1, 0]
在对数据进行这样的修改之后,我尝试实现双向LSTM,但收到了值错误

#信号_数据集=(3912,24160)->长度为24160的3912序列
#label_数据集=(3912,24160)->长度为24160的3912个序列。
#三维转换
sig_数据集=sig_数据集。重塑(1,len(sig_数据集),len(sig_数据集[0]))
lab_数据集=lab_数据集。重塑(1,len(lab_数据集),len(lab_数据集[0]))
列车尺寸=整数(长度(sig数据集)*0.8)
trainX,trainY=sig_数据集[:train_大小],adap_数据集[:train_大小]
validX,validY=sig_数据集[序列大小:],adap_数据集[序列大小:]
#定义LSTM
模型=顺序()
添加(双向(LSTM(512,返回序列=True),输入形状=(24160,1)))
model.add(时间分布(稠密的(1,activation='sigmoid'))
model.compile(loss='mean_squared_error',
优化器='adam',
指标=['acc'])
hist=模型拟合(列车X,
训练有素的,
纪元=10,
批次大小=1,
验证_数据=(validX,validY))

ValueError:检查输入时出错:预期
双向\u 32\u输入
有3个维度,但得到了
形状的数组(318424160)


我做错了什么?这种做法正确吗?请给我任何建议

sig_数据集=sig_数据集。重塑(1,len(sig_数据集),len(sig_数据集[0],1))
sig_数据集=sig_数据集。重塑(1,len(sig_数据集),len(sig_数据集[0],1))