我的MVC应用程序中有一个内部项目(分隔文件夹)。它包含我的一个项目的类。 然后我有一个用于此项目的控制器和初始化它的方法如下所示:
[HttpPost]
public ActionResult initiate() {
// System.Diagnostics.Debug.WriteLine("Initiated");
Network net = new Network(normalizeInput);
net.train();
// System.Diagnostics.Debug.WriteLine("average error :" + net.averageError);
double err = net.averageError;
ViewBag.err = err.ToString();
return View("initiate");
}
及其观点:
@{
ViewBag.Title = "initiate";
}
<h3>Everything is prepared</h3>
<!--<button type="button" onclick="location.href='@Url.Action("initiate", "BackpropController")'"/> -->
@using (Html.BeginForm("initiate", "Backprop", FormMethod.Post)) {
@Html.AntiForgeryToken()
<input type="submit" value="Initiate" />
}
<br>
<br>
@{ string averageError = ViewBag.err;
if (averageError != null) {
<h4>@averageError</h4> }
else { <h4>no error</h4>}
}
问题是:如何在每次迭代中在视图中显示更新的值?
因为该变量是最后一个,但方法train()
包含循环,其中平均误差如下:
averageError += Math.Abs(testingSet[j].desiredOutput - neuron.getOutput());
我感兴趣的是因为我想制作错误图,因为它是迭代的函数..简单地说:
F(误差,迭代)
图表应该放在我发布的视图中,应该在方法train()
感谢您的回答。
答案 0 :(得分:0)
我不确定我是否理解你的问题。
如果要在视图上传递迭代,则必须:
答案 1 :(得分:0)
您需要将Network类列车方法的averageError值返回给控制器。例如,您可以使用Network类中的属性执行此操作,例如...
class Network {
//your other code
public IEnumerable<double> averageErrors {get; set;}
public void train() {
averageErrors = new List<double>();
for (//your loop) {
averageError += Math.Abs(testingSet[j].desiredOutput - neuron.getOutput());
averageErrors.Add(averageError);
}
}
}
然后在你的控制器......
[HttpPost]
public ActionResult initiate() {
// System.Diagnostics.Debug.WriteLine("Initiated");
Network net = new Network(normalizeInput);
net.train();
// System.Diagnostics.Debug.WriteLine("average error :" + net.averageError);
double err = net.averageError;
// you now have a list of averageErrors in your controller to use as you please
List<double> allErrors = net.averageErrors;
ViewBag.err = err.ToString();
return View("initiate");
}
这使您可以在列车方法完成后访问所有平均错误,因此您可以根据需要在视图中报告此错误。
如果train是一个长期运行的方法,并且您希望在方法运行时显示平均错误的实时更新,那么事情会变得更复杂一些。我将使用的一般方法是使train方法异步,但在返回视图之前不等待它的执行。该视图将具有占位符,并使用某种形式的客户端代码来监听更新,例如SignalR。然后,train方法会定期向客户端发送更新,然后最终发送完成的数据。