Neural network 分类神经网络的变量输入

Neural network 分类神经网络的变量输入,neural-network,classification,Neural Network,Classification,我目前正在做一个项目,在鞋子里有一个传感器,它记录加速度和陀螺仪传感器的XYZ。每毫秒我得到6个数据点。现在的目标是,如果我做一个动作,比如跳跃或踢腿,我会使用传感器的输出来预测正在做的动作 问题是:例如,如果我跳转,一次可能会得到1000个数据点,但在另一次,我得到1200个数据点,这意味着输入的大小不同。到目前为止,我所研究的神经网络要求输入大小为常数,以预测Y值,然而,在这种情况下,并非如此。我做了一些关于如何制作一个可变大小的神经网络的研究,但还没有找到一个可行的。将输入裁剪到一定大小不

我目前正在做一个项目,在鞋子里有一个传感器,它记录加速度和陀螺仪传感器的XYZ。每毫秒我得到6个数据点。现在的目标是,如果我做一个动作,比如跳跃或踢腿,我会使用传感器的输出来预测正在做的动作

问题是:例如,如果我跳转,一次可能会得到1000个数据点,但在另一次,我得到1200个数据点,这意味着输入的大小不同。到目前为止,我所研究的神经网络要求输入大小为常数,以预测Y值,然而,在这种情况下,并非如此。我做了一些关于如何制作一个可变大小的神经网络的研究,但还没有找到一个可行的。将输入裁剪到一定大小不是一个好主意,因为这样我就会丢失数据。此外,如果我只是通过增加0来调整较小的试验,它会使模型倾斜。关于模型的任何建议,或者如何更好地清理数据?

您需要的是。我的大多数代码都使用TensorFlow,但在大多数其他DL库中也可以使用TensorFlow。RNN可以处理可变长度的数据,并用于许多事情,如语音检测。(演讲可以是可变长度的,正如你所说,我们也不能缩短它或将它分成更小的盒子)。下面是一个小示例,它实现了一个适合您的模型需求的简单NN

我们还必须为您的任务使用RNN。顾名思义,参差不齐的张量具有可变的内部形状,非常适合表示持续时间可变的情况

将tensorflow导入为tf
将numpy作为np导入
x=[]
#您的操作序列存储为一个热编码。
y=tf.one_hot(np.array([np.random.randint(0,4))表示范围内的u(100)]),5)
#您的输入数据,每行是一个np形状数组(随机值介于600和1200之间,5)
对于范围(100)内的i:
温度=np.random.randint(6001200)
x、 追加(np.random.rand(临时,5))
x=tf.参差不齐常数(x)
keras_模型=tf.keras.Sequential([
tf.keras.layers.Input(shape=[None,5],dtype=tf.float64,ragged=True),
tf.keras.layers.LSTM(32),
tf.keras.致密层(32),
tf.keras.layers.Activation(tf.nn.relu),
tf.keras.致密层(5)
])
keras_model.compile(优化器='rmsprop',loss=tf.keras.loss.CategoricalCrossentropy(from_logits=True))
keras_模型拟合(x,y,历元=100)

我已经将内部模型的复杂度保持在最低限度,我希望通过进一步的测试,您可以对其进行扩展。最好的架构需要测试。我的建议是使用多个并以两个小的密集层结束。

在推断过程中,您是否尝试为每个时间步获取标签?意思是你的火车看起来像是
[走,走,走,跳,跳,跳,跳,走,踢,踢,跳,跳]
?信号段长度可变且每个时间戳都有标记?嗨!因此,数据将包含许多行。每一行对应于一项活动,如行走、跳跃等。每一行将包含一些变化量的列,每一列是一个3d列表,包含时间I的x、y、z加速度。因此,我有每个时间间隔的加速度,我有多个时间间隔。我想用这些数据来预测所采取的行动。例如,如果我跑步,我可能只有10个时间间隔,而如果我跳跃,我可能有40个时间间隔。请让我知道这是否更有意义。你们能提供一个小的训练数据(X和y)的截图吗。不需要其他功能,只需要顺序功能。