Я сам не являюсь пользователем PyMC, но недавно наткнулся на эту статью который показал фрагмент какой-то модели PyMC:
def linear_regression(x):
scale = yield tfd.HalfCauchy(0, 1)
coefs = yield tfd.Normal(tf.zeros(x.shape[1]), 1, )
predictions = yield tfd.Normal(tf.linalg.matvec(x, coefs), scale)
return predictions
Автор предложил пользователям
было бы неудобно с
bar = yield foo
Неудобно мне и правда. Я пытался разобраться в этом генераторе, но не мог понять, как его можно использовать.
Это мой мыслительный процесс. Если я сделаю foo = linear_regression(bar)
и выполню foo
(например, next(foo)
), он вернет мне значение scale
. Однако это также изменит локальную переменную scale
на None
. Точно так же, если foo
выполняется снова, я могу получить значение coefs
, но локальное coefs
станет None
. Поскольку оба локальных scale
и coefs
равны None
, как можно оценить predictions
?
Или есть способ оценить foo
, не вызывая yield
для scale
и coefs
, и напрямую получить результат для predictions
?
При чем здесь черная магия? Нужна помощь.