如何退出一个while循环后一定数量的值保存到一个矩阵

2视图(30天)
我下面的伪代码发布的任务我已经交给训练神经网络。我们被告知要从头开始编写代码,而不是使用MATLAB的函数/工具箱已经可用。
我有一个问题使用while循环。在while循环有一个for循环执行计算和保存的值每次迭代一个m x 1矩阵。这个矩阵我创建了一个1400 0 x1矩阵,并改变每一行的值与每个交互影响的For循环(我可以做一个更好的方法吗?)。
我想退出while循环最后一行后为我的矩阵计算。我不确定而进入什么条件来实现这一点。此刻是我的代码:
%主循环数据
MaxEpochs = 1400;
MSE = 1000;
MSEData = 0 (MaxEpochs, 1);
MSEData (1,1) = MSE;
MSE_threshold = 1的军医;
%的主循环训练神经网络
((MSEData > MSE_threshold) | | MaxEpochs达到))%,用伪代码写的
MaxEpochs = 1:1400
%传球前进
i = 1:1400
:x = TrainingSet(我)';
%隐层O / P,双s形的函数(激活函数)
u1 = W1 * x + b1;
v1 = (1-exp (u1)。/ (1 + exp (u1));
%输出层O / P,双s形的函数(激活函数)
u2 = (W2 * v1) + b2;
v2 = (1-exp (u2)。/ (1 + exp (u2));
%向后传递
d2 = (TargetTraining(我,:)- v2)。* ((1/2) * (1 - (v2。^ 2)));
d1 = (W2 ' * d2)。* ((1/2) * (1 - (v1。^ 2)));
%计算新的b2和W2权重
d2 = d2 ';
dW2 = (d2。* v1) * 0.001;
db2 = d2 * 0.001;
%计算新b1和权重
d1 = d1 ';
dW1 = (d1。* x) * (-0.001);
db1 = d1 * 0.001;
%更新重量和偏见
W2 = W2 + dW2 ';
b2 = b2 + db2 ';
W1 = W1 + dW1 ';
b1 = b1 + db1 ';
Sum_of_ErrorSquared = ((TargetTraining总和(我,:)- v2)) ^ 2;
结束
MSEData (MaxEpochs, 1) = Sum_of_ErrorSquared. / 1400;
结束
结束
目前上面的代码成功添加新的数据需要“MSEData”矩阵。然而,它并不退出while循环在达到1400行,我还没实施,找出一种方法来做到这一点。我怎样才能循环吗?

答案(1)

詹姆斯Tursa
詹姆斯Tursa 2020年5月12日
编辑:詹姆斯Tursa 2020年5月12日
while循环的一般形式是典型的一些变化:
(条件)
%的东西最终改变了条件
结束
(真正的)
%的东西最终改变了条件
如果(条件)
打破;
结束
结束
或者你可以将两个和while循环的主要条件,也是一个“早期退出”条件内循环。
看起来你是以来第一次语法编码条件来测试在语句中。但是它看起来像你有一个简单的for循环在while循环,你仅仅想要退出这个for循环结束后while循环吗?你使用MaxEpochs两件不同的事情……最大的时代价值和for循环指数。我不清楚你真正想做的事,和你为什么都一个while循环和循环。也许把循环后休息?也许只有for循环?
你能提供更多的解释吗?
2的评论
MarkM
MarkM 2020年5月13日
也许我应该换种我的问题——如何保存MSEdata单个列的矩阵,然后退出while循环后MSEdata添加了1400行吗?

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!