【问题标题】:1D Convolutional Neural Network一维卷积神经网络
【发布时间】:2020-02-13 11:30:03
【问题描述】:

我需要在 EEG 数据上测试 CNN,我听说 1D-CNN 对实时应用很有用。 我有 5 个测试对象,每个对象都有 3 个会话的数据。每个文件包含来自 56 个电极/通道 (56, 260) 的信号。

我正在努力寻找如何设置 CNN 以及如何转换输入数据。

model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=input_shape))

如何从 (15, 56, 260) 中选择 1DCNN 的输入形状?

【问题讨论】:

  • 什么是 260?以及 3 个会话如何参与数据?
  • 260 是信号的样本。所以每个通道(总共 56 个通道)有 260 个信号样本。 EEG 信号是从实验中提取的。每个受试者执行 4 次实验(4 个会话),前 3 个会话用于训练 NN。每个会话的目标是主题编号
  • 什么叫“样本”,它们在时间上形成一个序列吗?
  • 是的,信号是时间序列

标签: tensorflow machine-learning keras neural-network conv-neural-network


【解决方案1】:

因此,对于 Keras 卷积,您应该保持这种方式:(examples, time_steps, features)

地点:

  • 示例(通常称为示例,但不要与您的传感器示例混淆)- 它们是您的模型的示例数量:15
  • time_steps:传感器的连续连续测量:260
  • 特性(也是通道):独立/并行通道数:56

然后您的数据应形成(15,260,56)

如果您已经将其组织为(15,56,260),则需要置换或转置它,而不是重塑。你可以试试numpy.swapaxes()

一旦您的数据被正确地组织为(15, 260, 56),您就可以使用input_shape=(260,56)input_shape=(None, 56) 创建您的网络,以防您需要可变长度的序列。


如果您想尝试循环网络,或者甚至将循环与 conv1d 混合使用,这也是您需要的相同形状。

【讨论】:

  • 非常感谢您的解释!但是那么训练数据的形状会是(15,260,56),还是应该转换成一维数组?
  • 就是这个形状。
猜你喜欢
  • 2017-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2020-07-10
相关资源
最近更新 更多