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

Tensorflow 让LSTM从3个变量的相关性中学习,tensorflow,machine-learning,keras,deep-learning,lstm,Tensorflow,Machine Learning,Keras,Deep Learning,Lstm,我有一个包含3个变量x,y,z的数据集。它们是3个不同传感器的读数。这些将是输入 当这些传感器发现特定物体时,其读数的相应输出应为1。否则,这些读数的相应输出应为0 这是他们找到对象时的示例 这就是他们找不到目标的例子 我想做的是让一个神经网络可能是一个LSTM或任何其他方法,接收传感器的读数,并告诉他们是否找到了目标。 请注意,传感器输出的值通常与图中的值不同,但我注意到的是读数和它们之间的距离之间的相关性 实现这一点的最佳方式是什么?最好的模式是艺术。你必须不断测试,直到你有一个适合你的

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

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

这是他们找到对象时的示例

这就是他们找不到目标的例子

我想做的是让一个神经网络可能是一个LSTM或任何其他方法,接收传感器的读数,并告诉他们是否找到了目标。 请注意,传感器输出的值通常与图中的值不同,但我注意到的是读数和它们之间的距离之间的相关性


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

最好的模式是艺术。你必须不断测试,直到你有一个适合你的数据

但基本上,您将有形状示例、时间步长、特征的输入,其中:

示例=任何值,越多越好 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中,您正在丢弃时间步长维度。 现在你的问题是2D-示例、单位或特征 了解最后一层必须只有一个单元。因此,它可以为每个示例返回一个结果 您的输出数据也必须与此形状匹配:示例,1 理解最后一次激活应该是“sigmoid”,因此结果在0和1之间。
最好的模型是艺术。你必须不断测试,直到你有一个适合你的数据

但基本上,您将有形状示例、时间步长、特征的输入,其中:

示例=任何值,越多越好 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中,您正在丢弃时间步长维度。 现在你的问题是2D-示例、单位或特征 了解最后一层必须只有一个单元。因此,它可以为每个示例返回一个结果 您的输出数据也必须与此形状匹配:示例,1 理解最后一次激活应该是“sigmoid”,因此结果在0和1之间。
这是一个快速而详细的回答。谢谢。还有一个细节,我应该如何组织输入?如果我有一个文件,其中有3列的读数值,如何为一组值指定相应的输出值?除了所有行之外,它应该是1还是0?您希望实现什么?每个步骤的分类还是每个序列的单个分类?我想按序列分类,然后答案包含以下信息:您的输出数据必须匹配此形状:示例,1。每个序列一节课。这是一个快速而详细的答案。谢谢。还有一个细节,我应该如何组织输入?如果我有一个文件,其中有3列的读数值,如何为一组值指定相应的输出值?除了所有行之外,它应该是1还是0?您希望实现什么?每个步骤的分类还是每个序列的单个分类?我想按序列分类,然后答案包含以下信息:您的输出数据必须匹配此形状:示例,1。每个序列一个类。