python cnn 时间序列_变长时间序列的一维CNN分类

我有一个由不同长度的时间序列组成的数据集。例如,考虑一下这个ts1 = np.random.rand(230, 4)

ts2 = np.random.rand(12309, 4)

我有200个数组列表形式的序列

^{pr2}$

如果良好,这些时间序列的标签为1,否则为0。因此我的标签应该是labels = [0, 0, 1, 0, 1, ....]

我正在构建一个keras模型,如下所示:model = keras.Sequential([

keras.layers.Conv1D(64, 3, activation='relu', input_shape=(None, 4)),

keras.layers.MaxPool1D(3),

keras.layers.Conv1D(160, 10, activation='relu'),

keras.layers.GlobalAveragePooling1D(),

keras.layers.Dropout(0.5),

keras.layers.Dense(128, activation='relu'),

keras.layers.Dense(2, activation='softmax')

]))

第一个卷积层的输入形状中的4对应于每个时间序列中的列数,该列数是恒定的(可以认为它有4个传感器返回不同操作的测量值)。目标是分类一个时间序列是好是坏(0或1),但是我不知道如何使用keras来训练它。在

跑这条线model.fit(input_x, labels, epochs=5, batch_size=1)

返回错误Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 200 arrays

甚至使用np.数组(input_x)给出一个错误。如何用可变长度的序列训练这个模型?我知道填充是一种选择,但那不是我想要的。另外,我不想使用带有滑动窗口的RNN。我真的在寻找一个解决方案与1dcnn工作的可变长度序列。任何帮助都将不胜感激!在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一维卷积神经网络(Convolutional Neural Network, CNN)是一种常用于图像识别的深度学习模型。然而,它也可以处理序列数据,如时间序列数据。下面是使用Python编写的一维CNN处理时间序列数据的示例代码: ```python import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense # 生成示例时间序列数据 time_series = np.random.random((100, 10, 1)) # 100个样本,每个样本10个时间步,每个时间步1个特征 # 创建一维CNN模型 model = Sequential([ Conv1D(32, 3, activation='relu', input_shape=(10, 1)), MaxPooling1D(2), Flatten(), Dense(1, activation='sigmoid') ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy') # 训练模型 model.fit(time_series, labels, epochs=10, batch_size=32) ``` 上述代码首先导入了必要的库,包括NumPy用于数据处理和Keras用于构建模型。然后,创建了一个随机生成的时间序列数据`time_series`,该数据有100个样本,每个样本包含10个时间步和1个特征。 接下来,通过`Sequential`类创建了一个序贯模型。使用`Conv1D`层添加了一个一维卷积层,该层包含32个过滤器,每个过滤器的大小为3,激活函数为ReLU。然后,使用`MaxPooling1D`层进行最大池化,将特征图的大小减半。再使用`Flatten`层将特征图展平,以便于连接全连接层。最后,通过`Dense`层添加了一个全连接层,输出大小为1,并使用Sigmoid函数作为激活函数。 接下来,使用`compile`方法编译模型,设置优化器为Adam,损失函数为二分类交叉熵。 最后,使用`fit`方法训练模型,传入时间序列数据和相应的标签,并指定了训练的epoch数和批次大小。模型将根据数据进行训练,并逐步优化参数,以便对时间序列数据进行预测和分类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值