Copiar muchas fórmulas grandes (redes neuronales) entre tablas de datos es muy, muy lentoTengo un conjunto de datos de 10000 filas x 100+ columnas utilizadas para el modelado de redes neuronales. Hice 75 modelos diferentes de 20 nodos x 100 entradas / nodo y guardé las fórmulas usando fórmulas rápidas. Tengo 10 tablas diferentes (mismo conjunto de datos, modelos diferentes), cada una con 75 modelos y quiero fusionar todos los modelos (fórmulas) en una tabla maestra, ya que quiero aplicar todos los modelos a cualquier dato nuevo que recopile.
Cada método que intento lleva una eternidad. He usado el complemento Copiar fórmulas para copiar las fórmulas de cada tabla en una sola tabla y se tarda aproximadamente 2 días en total para completar todas las fusiones de tablas y, sin indicación de progreso, es difícil saber si todavía funciona o si congelado.
He utilizado Unir haciendo coincidir filas con la supresión de evaluación de fórmula para ponerlos a todos en una tabla y esto es rápido. Sin embargo, cuando vuelvo a activar la evaluación de fórmula seleccionando manualmente las columnas de fórmula y usando Columnas> Estandarizar atributos> Propiedades de columna> Fórmula> Suprimir evaluación, el recálculo de las 750 fórmulas tarda para siempre. Ha estado funcionando durante 30 horas (máximo al 12% de utilización del procesador) y no tengo idea de cuál es el progreso.
He intentado recorrer las columnas una por una para activar la evaluación de fórmulas, pero incluso hacer esto para 1 columna tomó más de 5 minutos, lo que parece increíblemente largo.
Hay alguna manera de acelerar esto? Sé que hay soluciones, pero parece que debería ser mucho más fácil y rápido que esto.
Re: Copiar muchas fórmulas grandes (redes neuronales) entre tablas de datos es muy, muy lentoCon problemas "mayores" es difícil ofrecer consejos generales sobre eficiencia sin conocer algunos o todos los detalles. Si aún no lo ha hecho, puede observar el impacto de los mensajes de la tabla 'Iniciar actualización de datos ()' y 'Finalizar actualización de datos ()', y / o controlar la forma en que se evalúan las fórmulas (o no). FWIW, mi instinto me dice que puede hacerlo mejor usando el Formula Depot como intermediario Comencé a escribir algo de código para verificar esto, pero para problemas de este tamaño, el modelado en sí toma algo de tiempo, así que no continué por este camino:
NamesDefaultToHere(1);
// Define the data volume
nr = 100;
nc = 10;
// Make some random data
dt = AsTable(J(nr, nc, RandomNormal(0, 1)));
dt << setName("Random Data");
// Fit neural and publish prediction formula
cols = dt << getColumnNames("String");
yCol = cols[NItems(cols)];
RemoveFrom(cols, NItems(cols));
nn = dt << Neural(Y(Eval(yCol)), X(Eval(cols)), Fit( NTanH( 3 ) ), Invisible);
nn(Fit(1)) << publishPredictionFormula;
Report(nn) << closeWindow;
Re: Copiar muchas fórmulas grandes (redes neuronales) entre tablas de datos es muy, muy lentoHola, Ian,
Gracias por la rápida respuesta. Acabo de probar el método Formula Depot agregando Fórmula desde la columna con todas las fórmulas y la creación del script fue rápida. Cuando probé Run Scripts (ejecutando 6 scripts) en una tabla duplicada con las columnas de fórmula eliminadas, fue muy rápido. Hasta ahora tan bueno. Cuando intenté ejecutar todos los scripts en la misma tabla, comenzó rápidamente pero luego se desaceleró progresivamente a medida que se creaban más columnas (pude ver cómo se creaban las columnas en el panel Columnas). Finalmente pareció congelarse (no se crearon nuevas columnas en 5 minutos). Hmmmm Ahora voy a intentar hacerlo en pequeños lotes para ver si eso ayuda.
Re: Copiar muchas fórmulas grandes (redes neuronales) entre tablas de datos es muy, muy lentoMe pregunto si todas las fórmulas se vuelven a calcular simultáneamente y compiten por el tiempo del procesador.
Re: Copiar muchas fórmulas grandes (redes neuronales) entre tablas de datos es muy, muy lentoIntenté ejecutar Run Script desde Formula Depot en 100 fórmulas a la vez. Los primeros 100 fueron razonablemente rápidos. Los segundos 100 disminuyeron la velocidad y parecieron detenerse.
Intenté copiar los scripts para todas las fórmulas de Formula Depot, envolviendo << Comenzar actualización de datos ... << Fin de actualización de datos.
Intenté ejecutar Suppress Eval (0) en columnas de fórmulas que se copiaron con Suppress Eval (1). Recorrí las columnas envueltas en << Iniciar actualización de datos .... Col (i) Suprimir Eval (0) ...... Esperar (0) << Finalizar actualización de datos. Probé en 10 columnas. No funciono
Hasta ahora, nada de lo que he intentado ha funcionado más rápido que unir manualmente las tablas por filas con la evaluación de fórmula activada y eso tomó días .....
PD ¿Hay alguna manera de romper un script en ejecución?