Me gustaría usar ANNs para mi problema, pero el problema es que mis números de nodo de entradas y salidas no son fijos.
Hice una búsqueda en Google antes de hacer mi pregunta y descubrí que el RNN puede ayudarme con mi problema. Pero, todos los ejemplos que he encontrado son de alguna manera tienen un número definido de nodos de entrada y salida.
Entonces, estoy buscando una estrategia, cómo hacerla real o al menos algunos ejemplos, preferibles en Keras o PyTorch.
Más detalles sobre mi problema:
Tengo dos listas de entradas, donde la longitud de la primera es fija e igual a dos, fe:
in_1 = [2,2]
pero la longitud de la segunda lista es flexible, la longitud puede ser de tres a inf, fe:
in_2 = [1,1,2,2]
o
in_2 = [1,1,1,2,2,2,3,3,3]
Además, las listas de entrada dependen unas de otras. La primera lista muestra la dimensión de la lista de salida. Entonces, si in_1 = [2,2], significa que la salida debe tener la posibilidad de volver a formarse en forma [2,2].
Actualmente, estoy pensando combinar dos listas de entrada en una:
in = in_1 + in_2 = [2, 2, 1, 1, 2, 2]
Además, la salida tiene la misma longitud que in_2 lista , fi:
si las listas de entrada son:
in_1 = [2, 2]
in_2 = [1, 1, 2, 2]
La salida debe ser:
out = [1, 2, 1, 2]
Cualquier idea es bienvenida!
Creo que puede haber entendido mal el número fijo de entradas para el RNN. Este es el número de entradas por paso de tiempo . Todos sus ejemplos tienen un número fijo de entradas por paso de tiempo: 1! Los alimenta uno a la vez a su red neuronal, terminando con un token de "fin" especial (siempre puede tener una segunda entrada para esto). Enséñele a no dar salida hasta que vea el token final, y luego a generar los componentes del resultado uno a la vez, terminando con un token de salida final especial.
fuente
Sabiendo que la primera lista es casi invariable (solo describe una cierta geometría), también puede intentar crear muchos NN especializados diferentes para cada configuración in_1 distinta y usar solo in_2 para alimentar la red.
Entonces in_1 podría conducir diferentes redes.
En un primer paso, determina la configuración (es decir, crea un dict) y luego entrena / alimenta las redes especializadas en consecuencia.
fuente