![](/img/trans.png)
[英]Classification of time series of variable lengths using 1D CNN in tensorflow
[英]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.