gpt4 book ai didi

python - 在 Matlab 中是否有等效于 Python 的列表和附加功能?

转载 作者:太空狗 更新时间:2023-10-30 02:19:07 24 4
gpt4 key购买 nike

与其说这是一道数学题,不如说这是一道 Matlab 编程题。

我想在不同的学习率下运行多次梯度下降。我有一组学习率

alpha = [0.3, 0.1, 0.03, 0.01, 0.003, 0.001];

每次运行梯度下降时,我都会得到一个向量 J_vals 作为输出。但是,除了做类似的事情之外,我对 Matlab 的了解还不够了解如何实现这一点:

[theta, J_vals] = gradientDescent(...., alpha(1),...);
J1 = J_vals;
[theta, J_vals] = gradientDescent(...., alpha(2),...);
J2 = J_vals;

等等。

我考虑过使用 for 循环,但后来我不知道如何处理 J_vals(不确定如何将 for 循环应用于 J1J2 等)。也许它看起来像这样:

for i = len(alpha)
[theta, J_vals] = gradientDescent(..., alpha(i),...);
J(i) = J_vals;
end

然后我会有一个向量的向量。

在 Python 中,我会运行一个 for 循环并将每个新结果附加到列表的末尾。我如何在 Matlab 中实现这样的东西?还是有更有效的方法?

最佳答案

如果您知道要进行多少次循环以及J_vals 的大小(或者至少是一个合理的上限),我建议预先分配容器数组的大小

J = zeros(n,1);

然后在每个循环中插入新值

J(start:start+n) = J_vals

这样你就不会重新分配内存。如果您不知道,可以将值附加到数组。例如,

J = []; % initialize
for i = len(alpha)
[theta, J_vals] = gradientDescent(..., alpha(i),...);
J = [J; J_vals]; % Append column row
end

但这是在每个循环中重新分配数组的大小。如果循环不是太多,应该没问题。

关于python - 在 Matlab 中是否有等效于 Python 的列表和附加功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32108097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com