你需要的是
循环神经网络。我的大部分代码使用TensorFlow,但其他大多数深度学习库也提供相同的功能。RNN可以处理变长数据,广泛应用于许多领域,如语音检测(语音长度可变,无法缩短或分成较小的块)。下面是一个实现简单NN以符合你模型要求的小例子。
我们还必须使用
不规则张量与RNN一起完成你的任务。不规则张量,顾名思义,具有可变的内部形状,非常适合表示时间持续时间可变的情况。
import tensorflow as tf
import numpy as np
x = []
y = tf.one_hot(np.array([np.random.randint(0, 4) for _ in range(100)]), 5)
for i in range(100):
temp = np.random.randint(600, 1200)
x.append(np.random.rand(temp, 5))
x = tf.ragged.constant(x)
keras_model = tf.keras.Sequential([
tf.keras.layers.Input(shape=[None, 5], dtype=tf.float64, ragged=True),
tf.keras.layers.LSTM(32),
tf.keras.layers.Dense(32),
tf.keras.layers.Activation(tf.nn.relu),
tf.keras.layers.Dense(5)
])
keras_model.compile(optimizer='rmsprop', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))
keras_model.fit(x, y, epochs=100)
我已将内部模型复杂性最小化,希望您在进一步测试后能够扩展。最佳架构需要进行测试。我的建议是使用多个双向GRUs,并以几个小的稠密层结束。
[走,走,走,跳,跳,跳,跳,走,踢,踢,跳,跳]
?其中信号段的长度是可变的,并且每个时间戳都被标记了吗? - Akshay Sehgal