JIT: частичный или со статическими аргументами? Нехешируемый ввод, но хэшируемый частичноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 JIT: частичный или со статическими аргументами? Нехешируемый ввод, но хэшируемый частично

Сообщение Anonymous »

Я немного не понимаю, что именно происходит и какой вариант выбрать. Давайте рассмотрим пример:

Код: Выделить всё

import jax
from functools import partial
from typing import List

def dummy(a: int, b: List[str]):
return a + 1

Поскольку аргумент b является изменяемым, обработка статических имен аргументов невозможна:

Код: Выделить всё

j_dummy = jax.jit(dummy, static_argnames=['b'])
j_dummy(2, ['kek'])
ValueError: Non-hashable static arguments are not supported
Однако, если мы сделаем частичный: jp_dummy = jax.jit(partial(dummy, b=['kek'])), мы нацелимся на цель . Каким-то образом частичный объект действительно имеет метод __hash__, поэтому мы можем проверить его с помощью hash(partial(dummy, b=['kek'])).
Итак, я немного запутался: как мне действовать в более широкой перспективе? Должен ли я создавать частичные функции с любыми аргументами, а затем объединять их, или мне следует попытаться сохранить хешируемые аргументы? В каких ситуациях один подход лучше другого? Есть ли недостатки?

Подробнее здесь: https://stackoverflow.com/questions/791 ... le-partial
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»