winograd总结

Table of Contents

参考博客

https://www.cnblogs.com/shine-lee/p/10906535.html
https://www.cnblogs.com/Matrix_Yao/p/11640310.html

\begin{equation}
Y = A^{T}[(Gg) \odot (B^{T}d)]
\end{equation}

\begin{equation}
= \begin{bmatrix}
1 & 1 & 1 & 0\\
0 & 1 & -1 & -1
\end{bmatrix}
[(\begin{bmatrix}
1 & 0 & 0\\
1/2 & 1/2 & 1/2\\
1/2 & -1/2 & 1/2\\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
g_0 & g_1 & g_2
\end{bmatrix}^T) \odot (
\begin{bmatrix}
1 & 0 & -1 & 0 \\
0 & 1 & 1 & 0 \\
0 & -1 & 1 & 0 \\
0 & 1 & 0 & -1
\end{bmatrix}
\begin{bmatrix}
d_0 & d_1 & d_2 & d_3
\end{bmatrix}^{T}
)]
\end{equation}

\begin{equation}
= \begin{bmatrix}
1 & 1 & 1 & 0\\
0 & 1 & -1 & -1
\end{bmatrix}
[\begin{bmatrix}
g_0 \\
(g_0 + g_1 + g_2) / 2\\
(g_0 - g_1 + g_2) / 2\\
g_2
\end{bmatrix} \odot
\begin{bmatrix}\
d_0 - d_2\\
d_1 + d_2\\
d_2 - d_1\\
d_1 - d_3
\end{bmatrix}]
\end{equation}

\begin{equation}
\label{linelast}
= \begin{bmatrix}
1 & 1 & 1 & 0\\
0 & 1 & -1 & -1
\end{bmatrix}
\begin{bmatrix}
(d_0 - d_2)g_0 \\
(d_1 + d_2)(g_0 + g_1 + g_2)/2 \\
(d_2 - d_1)(g_0 - g_1 + g_2)/2 \\
(d_1 - d_3)g_2
\end{bmatrix}
\end{equation}

\begin{equation}
\label{mfirst}
m_1 = (d_0 - d_2)g_0
\end{equation}
\begin{equation}
m_2 = (d_1 + d_2)(g_0 + g_1 + g_2)/2
\end{equation}

\begin{equation}
m_3 = (d_2 - d_1)(g_0 - g_1 + g_2)/2
\end{equation}

\begin{equation}
m_4 = (d_1 - d_3)g_2
\label{last}
\end{equation}

substitute \ref{mfirst} to \ref{last} into \ref{linelast}
we get
\begin{equation}
Y = \begin{bmatrix}
m_1 + m_2 + m_3 \\
m_2 - m_3 - m_4
\end{bmatrix}
\end{equation}

2D形式推导

\begin{equation}
D = \begin{bmatrix}
d_{00} & d_{01} & d_{02} & d_{03} \\
d_{10} & d_{11} & d_{12} & d_{13} \\
d_{20} & d_{21} & d_{22} & d_{23} \\
d_{30} & d_{31} & d_{32} & d_{33}
\end{bmatrix}
\end{equation}
卷积核
\begin{equation}
K = \begin{bmatrix}
k_{00} & k_{01} & k_{02} \\
k_{10} & k_{11} & k_{12} \\
k_{20} & k_{21} & k_{22}
\end{bmatrix}
\end{equation}

写成矩阵,展开是

\begin{equation}
\begin{bmatrix}
d_{00} & d_{01} & d_{02} & d_{10} & d_{11} & d_{12} & d_{20} & d_{21} & d_{22} \\
d_{01} & d_{02} & d_{03} & d_{11} & d_{12} & d_{13} & d_{21} & d_{22} & d_{23} \\
d_{10} & d_{11} & d_{12} & d_{20} & d_{21} & d_{22} & d_{30} & d_{31} & d_{32} \\
d_{11} & d_{12} & d_{13} & d_{21} & d_{22} & d_{23} & d_{31} & d_{32} & d_{33}
\end{bmatrix}
\begin{bmatrix}
k_{00} \\ k_{01} \\ k_{02} \\
k_{10} \\ k_{11} \\ k_{12} \\
k_{20} \\ k_{21} \\ k_{22}
\end{bmatrix}=
\begin{bmatrix}
r_{00} \\
r_{01} \\
r_{10} \\
r_{11} \\
\end{bmatrix}
\end{equation}
分块矩阵,成员分开写:
\begin{equation}
\begin{bmatrix}
\begin{array}{ccc|ccc|ccc}
d_{00} & d_{01} & d_{02} & d_{10} & d_{11} & d_{12} & d_{20} & d_{21} & d_{22} \\
d_{01} & d_{02} & d_{03} & d_{11} & d_{12} & d_{13} & d_{21} & d_{22} & d_{23} \\ \hline
d_{10} & d_{11} & d_{12} & d_{20} & d_{21} & d_{22} & d_{30} & d_{31} & d_{32} \\
d_{11} & d_{12} & d_{13} & d_{21} & d_{22} & d_{23} & d_{31} & d_{32} & d_{33}
\end{array}
\end{bmatrix}
\begin{bmatrix}
\begin{array}{c}
k_{00} \\ k_{01} \\ k_{02} \\ \hline
k_{10} \\ k_{11} \\ k_{12} \\ \hline
k_{20} \\ k_{21} \\ k_{22}
\end{array}
\end{bmatrix} =
\begin{bmatrix}
\begin{array}{c}
r_{00} \\
r_{01} \\ \hline
r_{10} \\
r_{11} \\
\end{array}
\end{bmatrix}
\end{equation}

直接写成分块矩阵
\begin{equation}
\begin{bmatrix}
D_{00} & D_{10} & D_{20} \\
D_{10} & D_{20} & D_{30}
\end{bmatrix}
\begin{bmatrix}
\vec{k_0} \\
\vec{k_1} \\
\vec{k_2}
\end{bmatrix}=
\begin{bmatrix}
\vec{r_0} \\
\vec{r_1}
\end{bmatrix}
\end{equation}

对于实战
\begin{equation}
\begin{bmatrix}
D_{00} & D_{10} & D_{20} \\
D_{10} & D_{20} & D_{30}
\end{bmatrix}
\begin{bmatrix}
\vec{k_0} \\
\vec{k_1} \\
\vec{k_2}
\end{bmatrix}=
\begin{bmatrix}
\vec{r_0} \\
\vec{r_1}
\end{bmatrix}=
\begin{bmatrix}
M_0 + M_1 + M_2 \\
M_1 - M_2 - M_3
\end{bmatrix}
\end{equation}

公式中

\begin{equation}
\begin{split}
M_0 &= (D_{00} - D_{20})\vec{k_0} \\
M_1 &= (D_{10} + D_{20})\frac{\vec{k_0} + \vec{k_1} + \vec{k_2}}{2} \\
M_2 &= (D_{20} - D_{10})\frac{\vec{k_0} - \vec{k_1} + \vec{k_2}}{2} \\
M_3 &= (D_{10} - D_{30})\vec{k_2}
\end{split}
\end{equation}

Leave a Comment