Add `min` and `max` rev specializations?
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Lee primero las discusiones enlazadas de Stack Exchange y PyTorch; después, inspecciona las API existentes de min/max y los patrones de especialización de reverse-mode en la biblioteca. Aclara el comportamiento previsto para escalares y vectores, incluidos los argumentos iguales y los gradientes propuestos; la tarea estará terminada cuando las especializaciones acordadas estén implementadas con pruebas que cubran esos casos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
From this stackoverflow post it looks like we can phrase max(a,b) into
$$
max(a,b) = \frac{a + b + |a-b|}{2}
$$
and similarly for min
$$
min(a,b) = \frac{a + b - |a-b|}{2}
$$
So except for the case when $a=b$ this function is differentiable. For max we have
$$
\begin{align}
\frac{\partial max}{a} = \frac{1}{2} + \frac{sign(a-b)}{2}
\frac{\partial max}{a} = \frac{1}{2} + \frac{sign(a-b)}{2}
\end{align}
$$
so if a>b the gradient is 1 and if a<b the gradient is 1/2. For min we have
$$
\begin{align}
\frac{\partial min}{a} = \frac{1}{2} - \frac{sign(a-b)}{2}
\frac{\partial min}{a} = \frac{1}{2} - \frac{sign(a-b)}{2}
\end{align}
$$
where if $a>b$ the gradient is 0 and if $a<b$ the gradient is 1/2
From this it seems like pytorch does something similar to the above. I think this would be nice to implement. We can also write min(vector) for these as well.
- Lenguaje dominante
- C++
- Estrellas
- 845
- Forks
- 225
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 12
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stan-dev/math
-
Dificultad 3/5 1-2 días Aptitud para principiantes 54/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 54/100
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
numerics performance
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
stan-dev/math#3481 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
`eigendecompose_sym`, `eigenvalues_sym` and `eigenvectors_sym` do not compile for complex matrices of `fvar<var>` or `fvar<fvar<double>>`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
stan-dev/math#3477 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de stan-dev/math
Issues similares
-
Upstream changes to reviewAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
rhalbersma/xstd-ints#395 ·
Los mantenedores suelen responder en 1 día
-
[Bug] Root filesystem scope (/) incorrectly rejects all descendant pathsPosiblemente ocupada @mugenkyou la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
neutralinojs/neutralino.js#304 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
FuSa
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
tenstorrent/tt-umd#3851 ·
Los mantenedores suelen responder en 3 días
-
zq prints a raw SQL 'no such table: index_default' error when the index has no default indexAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
mattgodbolt/zindex#67 ·
Los mantenedores suelen responder en 1 día