Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas a todos.
Actualmente estoy trabajando en la implementación de una red neuronal para controlar un robot con una FPGA.
Al implementar el diseño lógico de la neurona tengo un problema:
La neurona recibe unas entradas "X" con buses de 8 bits. Esas entradas tienen que multiplicarse por otro número de 8 bits "Weight". El problema que tengo es que al multiplicar los dos número de 8 bits sale un número de 16bits. Después de unas operaciones más, el número que sale por la neurona es de 16 bits y ese tiene que ir conectado a otra neurona con entrada de 8 bits.
No se si me he explicado bien, pero necesito hacer una multiplicación de numeros de 8 bits y que la salida tambien sea de 8 bits. Ya que sino, en cada capa de neuronas los buses se multiplicarian por dos.
Saludos y gracias por la ayuda,
Ionthas.
Las multiplicaciones de 8x8 bits son de 16 bits siempre (a no ser que tengas los números acotados), lo que puedes hacer es coger los 8 bits de más peso pero de esa forma estás perdiendo mucha información.
S2
Ranganok Schahzaman
Las multiplicaciones de 8x8 bits son de 16 bits siempre (a no ser que tengas los números acotados), lo que puedes hacer es coger los 8 bits de más peso pero de esa forma estás perdiendo mucha información.
S2
Ranganok SchahzamanExacto, o transmitir por ese bus de 8 bits primero los de mayor peso y luego los de menor peso. No sé si esto es aplicable.
Con una FPGA prácticamente todo es implementable... dado el suficiente presupuesto.
Dependiendo de las 'capas' de neuronas que uses en la red, puede ser interesante acarrear dicho doblado de bus. Por lo poco que he visto de redes neuronales, tres o cuatro capas son suficientes. Eso es 8, 16, 32 y 64 bits. Me imagino que aplicando el truncado que propone Maese Ranganok y dejándolo todo a 16 bits como mucho, habrá más que suficiente.
Las pocas FPGA que conozco, suelen llevar multiplicadores de 18 bits... con acumuladores de 48.
Si que llevan multiplcadores, pero mi idea es hacer que cada neurona tenga su propio multiplicador.
Voy a provar de hacer el truncado que me ha propuesto ragnarok.