gpt4 book ai didi

tensorflow - 让 LSTM 从 3 个变量的相关性中学习

转载 作者:行者123 更新时间:2023-11-30 08:51:20 25 4
gpt4 key购买 nike

我有一个包含 3 个变量 x、y、z 的数据集。它们是 3 个不同传感器的读数。这些将是输入。

当这些传感器发现特定物体时,其读数相应的输出应为1。否则,其读数相应的输出应为0。

这是他们找到物体时的示例 This is example when they find the object

这是他们找不到对象时的示例 enter image description here

我想做的是制作一个神经网络(可能是 LSTM)或任何其他方法来接收传感器读数并判断它们是否找到了物体。请注意,传感器输出的值通常与图中不同,但我注意到读数与它们之间的距离之间的相关性。

实现这一点的最佳方法是什么?

最佳答案

“最好”的模型是“艺术”。您必须不断测试,直到找到适合您数据的方案。

但基本上,您将获得形状为(示例、time_steps、特征) 的输入,其中:

  • 示例 = 任意值,越多越好
  • time_steps = 每个示例的长度(读数数量)
  • 功能 = 3

然后您将创建一个以以下内容开头的模型:

inputs = Input((None, 3)) #variable time_steps, 3 features   

您可能会受益于使用这些值的标准化(可能使用批量标准化层):

outputs = BatchNormalization()(inputs)
outputs = Activation('tanh')(outputs)

然后启动模型的 LSTM 部分(层数取决于您的测试)

#any number of layers similar to this (this can also be 0)
outputs = LSTM(units, return_sequences=True, activation='tanh')(outputs)

#the last LSTM layer
outputs = LSTM(units, return_sequences=False, activation='tanh')(outputs)

您可以添加也可以不添加额外的分类层,例如:

#any number of classification layers, including 0
outputs = Dense(units)(outputs)
outputs = BatchNormalization()(outputs)
outputs = Activation('relu')(outputs)

#last classification:
outputs = Dense(1)(outputs)
outputs = BatchNormalization()(outputs)
outputs = Activatoin('sigmoid')(outputs)

最后,加入一切:

model = Model(intpus, outputs)

请注意,这只是模型的示例。这可能会有很大差异(包括分支、池化、注意力机制等……,但你的问题似乎很简单)。

这里的重要部分是:

  • 了解输入形状
  • 了解在最后一个 LSTM 中您将丢弃“time_steps”维度。
    • 现在您的问题是二维的 - (示例、units_or_features)
  • 了解您的最后一层必须只有一个单位。 (因此每个示例可以返回一个结果)
    • 您的输出数据也必须符合以下形状:(示例,1)
  • 理解最后一个激活应该是“sigmoid”,因此结果在 0 和 1 之间。

关于tensorflow - 让 LSTM 从 3 个变量的相关性中学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483702/

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