Реализация рекурсивных вычислений в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Реализация рекурсивных вычислений в Python

Сообщение Anonymous »

Я пытаюсь реализовать рекурсию ниже для tilde_alpha_t:
Изображение

У меня есть тензоры для t (времени), которые выглядят следующим образом

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

t
tensor([816, 724, 295,  54, 205, 373, 665, 656, 690, 280, 234, 155,  31, 684,
159, 749, 893, 795, 375, 443, 121, 881, 477, 326, 337, 970, 384, 247,
511, 432, 563, 753, 764,  77, 294, 803, 935, 507, 196, 744, 140, 641,
746, 844, 337,   4, 259, 276, 909, 962, 460, 372, 620, 466,  15, 244,
456, 829, 491, 620, 943, 925,  82, 856, 782, 117, 609, 909, 198, 626,
992, 998, 672, 762, 602,  85,  46, 529,  42, 841, 441, 237, 839, 953,
87, 941, 987, 980, 304, 690,  19, 598, 687, 483, 806, 366, 807, 136,
997, 708, 902, 751, 560, 245, 375, 688, 912, 547,  11, 285,   5,  83,
104, 346, 312, 236, 335, 664, 435, 762, 575, 184, 341, 618, 257, 634,
355, 762])
и тензор для соответствующего альфа_t, который

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

alphas
tensor([0.4948, 0.4966, 0.4992, 0.4999, 0.4995, 0.4990, 0.4973, 0.4974, 0.4970,
0.4993, 0.4994, 0.4996, 0.4999, 0.4971, 0.4996, 0.4962, 0.4909, 0.4953,
0.4989, 0.4987, 0.4997, 0.4918, 0.4985, 0.4991, 0.4991, 0.4683, 0.4989,
0.4993, 0.4984, 0.4987, 0.4981, 0.4962, 0.4960, 0.4998, 0.4992, 0.4951,
0.4850, 0.4984, 0.4995, 0.4963, 0.4996, 0.4975, 0.4963, 0.4938, 0.4991,
0.4999, 0.4993, 0.4993, 0.4893, 0.4747, 0.4986, 0.4990, 0.4977, 0.4986,
0.4999, 0.4994, 0.4986, 0.4943, 0.4985, 0.4977, 0.4830, 0.4870, 0.4998,
0.4932, 0.4956, 0.4997, 0.4978, 0.4893, 0.4995, 0.4976, 0.3951, 0.2222,
0.4972, 0.4960, 0.4978, 0.4998, 0.4999, 0.4983, 0.4999, 0.4939, 0.4987,
0.4994, 0.4940, 0.4794, 0.4998, 0.4835, 0.4311, 0.4535, 0.4992, 0.4970,
0.4999, 0.4979, 0.4971, 0.4985, 0.4950, 0.4990, 0.4950, 0.4996, 0.2813,
0.4968, 0.4900, 0.4962, 0.4981, 0.4994, 0.4989, 0.4971, 0.4889, 0.4982,
0.4999, 0.4992, 0.4999, 0.4998, 0.4997, 0.4990, 0.4992, 0.4994, 0.4991,
0.4973, 0.4987, 0.4960, 0.4980, 0.4995, 0.4991, 0.4977, 0.4993, 0.4976,
0.4990, 0.4960])
Есть какие-нибудь подсказки, как этого добиться? Моя попытка заключается в следующем:

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

def compute_tilde_alphas(times, alphas):
"""
Compute tilde_alpha_t for each t in the batch, starting from 0.

Args:
times: Tensor of times (shape [batch_size]).
alphas: Tensor of alpha values corresponding to times (shape [batch_size]).

Returns:
tilde_alphas: Tensor of computed tilde_alpha values (shape [batch_size]).
"""
# Ensure times and alphas are in the same batch dimension
assert times.shape == alphas.shape, "times and alphas must have the same shape"

batch_size = times.shape[0]
tilde_alphas = torch.zeros(batch_size, device=alphas.device)

# Iterate over the batch
for i in range(batch_size):
t = int(times[i])  # Current time for this batch element
alpha_t = alphas[i]  # Corresponding alpha

# Recursively compute tilde_alpha for this t
tilde_alpha_t = 0  # Start with tilde_alpha_0 = 0
for step in range(1, t + 1):  # Assume t defines the recursion depth
tilde_alpha_t = torch.sqrt(alpha_t) * (1 + tilde_alpha_t)

# Store the result
tilde_alphas[i] = tilde_alpha_t

return tilde_alphas
Я думаю, что это может быть правильно, хотя я почти уверен, что здесь могут быть более быстрые способы получения результата.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Реализация рекурсивных вычислений в Python
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Реализация рекурсивных вычислений в Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Реализация рекурсивных вычислений в Python
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Реализация рекурсивных вычислений в Python
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как сформулировать подсказку типа для функции Python, которую можно переназначать при рекурсивных вызовах?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

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