Я читал на этом сайте и не могу найти конкретный ответ, который я хочу.Я пытался прочитать слайды Дэвида Бисли об итерации и генераторах, но до сих пор не могу получить ответ, который ищу, хотя вопрос кажется простым.Я запускаю симуляцию на основе часов (Брайан для нейронных сетей), и у меня есть генератор, который манипулирует выходами и добавляет их к промежуточной сумме (для того, чтобы для простого фильтра нижних частот было n экспоненциального затухания),Затем я хочу получить выходные данные этих генераторов на каждом временном шаге, а затем использовать их в другой функции для обновления некоторых переменных состояния, в нем говорится, что, поскольку элемент имеет тип генератора, я не могу этого сделать.код и объяснение кода следующие:
import numpy
our_range=numpy.arange(0*ms,duration+defaultclock.dt,defaultclock.dt)
a=our_range
c=defaultclock.t #this is a clock that is part of the program i'm running, it updates every #timestep and runs through the range given above
def sum_tau(neuron): #this gives a running sum which i want to access (the alphas can be ignored as they are problem specific)
for c in a: #had to express it like this (with c and a) or it wouldn't run
if c ==0:
x=0
elif defaultclock.still_running()==False:
return
else:
x = x*(1-alpha) + p(neuron)*alpha
print x
yield x
#p(neuron) just takes some of the neurons variables and gives a number
b=sum_tau(DN) #this is just to specify the neuron we're working on, problem specific
@network_operation
def x():
b.next()
@network_operation означает, что на каждом такте будет выполняться нижеприведенная функция, поэтому обновляется сумма до ее требуемого значения.Теперь я хочу обновить значение, используемое для симуляции (где d - выходной сигнал в другой генератор, не показанный, но очень похожий на b), набрав:
ron= (d/(1-b))
Однако,он говорит, что я не могу использовать объект генератора таким образом, я использовал операторы print, чтобы определить, что b (и d) дают выходные данные, которые я хочу получить на каждом временном шаге (когда выполняется симуляция), но я не могу, кажется, взять эти выходные данные и сделатьчто-нибудь с ними.(точнее, неподдерживаемый тип операнда '-' для int и generator. Я попытался преобразовать его в число с помощью float (), но, очевидно, это не работает по той же причине, я чувствую, что должно быть очень простое решение моей проблемы, ноКажется, я не могу его найти. Заранее спасибо.