여러 매개변수를 사용하는 JAX `vmap` 예기치 않은 동작

王林
풀어 주다: 2024-02-09 09:21:07
앞으로
1031명이 탐색했습니다.

JAX `vmap` 对于多个参数的意外行为

질문 내용

Jax의 vmap이 여러 매개변수에 적용될 때 예상대로 작동하지 않는 것을 발견했습니다. 예를 들어 다음 기능을 고려해보세요.

으아악

를 위해 x = jnp.arange(7), y = jnp.arange(5), z = jnp.arange(3),该函数的输出形状为 (7, 5, 3). 그러나 다음 vmap 버전의 경우:

으아악

다음 오류가 출력됩니다:

으아악

이 오류의 원인을 설명해 줄 수 있는 사람이 있나요?


정답


vmap 的语义是它对一个或多个数组执行单个批处理操作。当您指定 in_axes=(none, 0, 0) 时,含义是“同时沿 yz 的前导维度映射”:您看到的错误告诉您 yy의 의미는 하나 이상의 배열에서 단일 배치 작업을 수행한다는 것입니다. in_axes=(none, 0, 0)을 지정하면 "yz 모두의 선행 차원을 따라 매핑"된다는 의미입니다. 당신이 보는 오류는 yy의 선행 차원의 크기가 다르기 때문에 배치 호환이 불가능하다는 것을 알려줍니다.

f1 함수는 기본적으로 브로드캐스팅을 사용하여 세 가지 배치 작업을 인코딩하므로 f1 本质上使用广播来编码三个批处理操作,因此要使用 vmap 复制该逻辑,您将需要 vmap를 사용하여 해당 논리를 복제하려면

의 세 가지 응용 프로그램이 필요합니다. 다음과 같이 표현할 수 있습니다: 🎜 으아악

위 내용은 여러 매개변수를 사용하는 JAX `vmap` 예기치 않은 동작의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!