繁体   English   中英

"TensorFlow 中用于时间序列分类的 1D CNN"

[英]1D CNN in TensorFlow for Time Series Classification

我的时间序列是一个 30000 x 500 的表格,表示来自三种不同类型图表的点:线性、二次和三次正弦曲线。 因此,线性图有 10000 行,二次方有 10000 行,三次方有 10000 行。 我从每个图表中采样了 500 个点。 这是一张图片来说明我的观点:

我已经使用 TensorFlow 构建了 98% 准确率的 2D CNN,但现在我想使用 TensorFlow 构建 1D CNN。 我只是用Conv1D<\/code>替换每个Conv2D<\/code>层吗? 如果是这样,我的filters<\/code>和kernel_size<\/code>是什么? 我什至不知道如何导入我的一维熊猫数据框。 我的 2D CNN 具有以下架构:

model = tf.keras.Sequential([
  tf.keras.layers.experimental.preprocessing.Rescaling(1./255),
  tf.keras.layers.Conv1D( 32, 3, activation='relu', input_shape=input_shape[2:])(x), #32 FILTERS and square stride of size 3
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(num_classes)
])

Conv1D 等效代码。 Conv1D 层需要 3D 输入并输出 3D 形状。 Maxpooling2D 需要 4D 输入。 您需要使用 maxpooling1D 层。

示例代码<\/strong>

import tensorflow as tf
input_shape = (4, 7, 10, 128)
num_classes = 3

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv1D(filters= 32, kernel_size=3, activation='relu',padding='same',input_shape= input_shape[2:]))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Conv1D(filters=32, kernel_size=3,padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Conv1D(filters=32, kernel_size=3,padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(num_classes, activation='softmax'))

model.summary()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM