gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:15:53 26 4
gpt4 key购买 nike

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

这是问题:例如,如果我跳跃,一次我可能会得到 1000 个数据点,但在另一次中,我得到 1200 个数量,这意味着输入的大小是不同的。到目前为止,我研究过的神经网络要求输入大小恒定以预测 Y 值,但是,在这种情况下,它不是。我已经对如何制作具有可变大小的神经网络进行了一些研究,但一直无法找到一种有效的方法。将输入裁剪为特定大小并不是一个好主意,因为那样我就会丢失数据。此外,如果我只是通过放置额外的 0 来调整较小的试验的大小,它会扭曲模型。关于一个可行的模型或如何更好地清理数据的任何建议?

最佳答案

您需要的是RNNs .我的大部分代码使用 TensorFlow,但在大多数其他 DL 库中也可用。 RNN 可以处理可变长度的数据,并用于许多事情,例如语音检测。 (语音可以是可变长度的,就像你说的,我们也不能缩短它或把它分成更小的盒子)。下面是一个小示例,它实现了一个符合您的模型要求的简单 NN。
我们还必须使用 ragged tensors使用 RNN 来完成您的任务。顾名思义,参差不齐的张量具有可变的内部形状,非常适合表示持续时间可变的情况。

import tensorflow as tf
import numpy as np


x = []
# Your action sequences stored as one-hot encoding.
y = tf.one_hot(np.array([np.random.randint(0, 4) for _ in range(100)]), 5)
# Your input data, each row is a np array of shape (random value between 600 and 1200, 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)
我已经将内部模型的复杂性保持在最低限度,我希望通过进一步的测试您可以扩展。最好的架构需要测试。我的建议是使用多个 Bidirectional GRUs并以几个小的密集层结束。

关于neural-network - 分类神经网络的变量输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com