Я пытаюсь сделать простой модуль под названием Neuron. Идея состоит в том, чтобы умножить значение входного пикселя на вес и затем накапливать. После накопления результат должен быть добавлен к значению смещения, а затем отправлен обратно на выход.
Код ниже, ошибка, которую я получаю, такая:
TypeError: [0], не может насыщать 'Int [10]' до другого базового типа 'Fixp [8, 16]' при разрешении возвращаемого типа «type_saturate (data, t, limits)»
from pygears import gear, Intf
from pygears.typing import Queue, Tuple, Fixp
from pygears.lib import mul, accum, qround, saturate, queuemap, add
from pygears.hdl import hdlgen
@gear
def neuron (din: Queue[Tuple[Fixp[4, 16], Fixp[4, 16]]], *, bias):
return din \
| queuemap(f=mul) \
| accum(init=Fixp[8, 32](0)) \
| add(Fixp[8,32](bias)) \
| qround \
| saturate(t=Fixp[8, 16])
neuron(Intf(Queue[Tuple[Fixp[4, 16], Fixp[4, 16]]]),bias=3)
hdlgen('/neuron',outdir='./temp_mlp')