【发布时间】:2017-08-24 20:11:54
【问题描述】:
我正在使用神经网络进行机器学习,在阅读了一些理论并研究了 Torch 之后,我现在想使用神经网络来了解一架具有未知模型的简单直升机需要产生多少推力才能悬停放置在参考高度。
我有控制背景,我知道通常不会为此使用神经网络或机器学习,但我认为这是一个很好的第一个任务。
我认为我需要的只是一个简单的线性回归(NN 形式)来学习将测量高度映射到推力的函数(产生准确的推力以抵消参考高度处的重力)。
但这似乎已经有点复杂了。假设我有一个简单的动态模拟器,并且每隔fs Hz 进行一次高度测量。我对我的模型进行前向传递(参见下面的模型代码)来计算模型的推力。到目前为止,一切都很好。但是效果不会立即可见,因此使用当前测量同时对损失函数执行前向和后向传递似乎是错误的做法。还是这样?
所以最终的问题是:我是否可以使用我提出的简单线性回归来解决所述问题,或者我是否需要更复杂的东西来捕捉模型的“响应时间”。
require 'torch'
require 'nn'
local model = nn.Sequential()
model:add(nn.Linear(1, 1)) -- Simple linear regression with one input (measured height) and one output (thrust)
local criterion = nn.MSECriterion -- Simple mean squared error loss function.
heigh_ref = 1
function height_measurement_callback(height_meas)
local thrust = model:forward(height_meas)
criterion:forward(height_meas, heigh_ref) -- ??
local grad = criterion:backward(height_meas, heigh_ref) -- ??
model:backward(height_meas, grad) -- ??
return thrust
end
【问题讨论】:
-
你能把问题说清楚吗?请减少 torch api 调用以及有关输入内容和获取方式的更多信息。
-
我不确定我是否明白你想要什么。没有太多要澄清的。对主机模拟环境以给定频率调用的回调进行成像,提供直升机高度的标量测量,并将返回值用作推力。编辑:也许您对缺少训练数据集感到困惑。我希望神经网络直接从模拟的输出中学习。
-
这里的问题不是关于神经网络,而是关于理解你期望它做什么。您是否为模型指定了特定的推力值,然后运行模拟跟踪车辆高度?或者你是否设置了一个特定的高度并希望程序改变推力直到它悬停在指定的高度?
-
第二个版本。我希望它在模拟持续运行时学习。
标签: machine-learning lua neural-network torch