如何在 Latex 中的伪算法块中创建初始化块?

如何在 Latex 中的伪算法块中创建初始化块?

如何在 Latex 中创建以下算法块?除了 init 块,我拥有一切。我该如何创建它?

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{algorithm2e}    

\begin{document}

\begin{algorithm}[H]
\DontPrintSemicolon
\SetAlgoLined
\KwData{$D$ = $<u,i,r>$}
\SetKwInOut{Input}{input}\SetKwInOut{Output}{output}
\Input{feat, iters, $\lambda$, $\eta$}
\Output{$A$, $B$}
\For{count $\leftarrow 1$ \KwTo iters}{
    $D \leftarrow$ Shuffle($D$) \;
    \For{$<u,i,r> \in D$}{
        $err_{ui} \leftarrow r - A_uB_i^T$ \;
        $A_u \leftarrow A_u + \eta(err_{ui}B_i - \lambda A_u)$ \;
        $B_i \leftarrow B_i + \eta(err_{ui}A_u - \lambda B_i)$ \;
    }
}
\caption{Stochastic Gradient Descent}
\end{algorithm}

\end{document}

算法示例

Latex 中是否有算法块的在线编辑器/生成器?

答案1

您可以使用以下方法\SetKwProg来创建自己的块:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{algorithm2e}    
\SetKwProg{Init}{init}{}{}
\begin{document}

\begin{algorithm}[H]
\DontPrintSemicolon
\SetAlgoLined
\KwData{$D$ = $<u,i,r>$}
\SetKwInOut{Input}{input}\SetKwInOut{Output}{output}
\Input{feat, iters, $\lambda$, $\eta$}
\Output{$A$, $B$}
\init{
\For{$u \in Users(D)$}{
    $A_u \leftarrow$ Vector(size: $feat)
}
\For{count $\leftarrow 1$ \KwTo iters}{
    $D \leftarrow$ Shuffle($D$) \;
    \For{$<u,i,r> \in D$}{
        $err_{ui} \leftarrow r - A_uB_i^T$ \;
        $A_u \leftarrow A_u + \eta(err_{ui}B_i - \lambda A_u)$ \;
        $B_i \leftarrow B_i + \eta(err_{ui}A_u - \lambda B_i)$ \;
    }
}
\caption{Stochastic Gradient Descent}
\end{algorithm}

\end{document}

答案2

您的解决方案中有一些拼写错误。应该是:

...
\Init{}{
\For{$u \in Users(D)$}{
    $A_u \leftarrow$ Vector(size: $feat$)
}
...

相关内容