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

当这些传感器找到特定对象时,其读数的相应输出应为1。否则,那里的读数的相应输出应为0。

这是他们找到对象时的示例
 tensorflow - 使LSTM从3个变量的相关性中学习-LMLPHP

这是当他们找不到对象的例子
tensorflow - 使LSTM从3个变量的相关性中学习-LMLPHP

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

最好的实现方法是什么?

最佳答案

“最好的”模型是“艺术”。您必须进行测试,直到找到适合自己数据的数据为止。

但基本上,您将输入形状为(examples, time_steps, features)的输入,其中:


examples =任何值,越多越好
time_steps =每个示例的长度(读数数)
features = 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”维度。


现在您的问题是2D-(examples, units_or_features)

请注意,您的最后一层必须只有一个单位。 (因此,每个示例可以返回一个结果)


您的输出数据还必须匹配以下形状:(examples, 1)

了解最后一次激活应为“ Sigmoid”,因此结果在0到1之间。

08-25 06:25