// it must write in the same format than readWeightMatrix from ReadFile class public void writeMatrices(WeightMatrix matrices) { Matrix W = matrices.getW(); Matrix V = matrices.getV(); wr.append("Matrix W:\n"); for (int i = 0; i < W.getRow(); i++) { for (int j = 0; j < W.getColumn(); j++) { String valueStr = W.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } if (V != null) { wr.append("Matrix V:\n"); for (int i = 0; i < V.getRow(); i++) { for (int j = 0; j < V.getColumn(); j++) { String valueStr = V.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); } wr.append("\n"); } } }
public void printMatrixIntoCSV(PrintWriter wr, Matrix matrix) { for (int i = 0; i < matrix.getRow(); i++) { for (int j = 0; j < matrix.getColumn(); j++) { String valueStr = matrix.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } }
public void writeMatriz(Matrix W) { wr.append("Matrix W:\n"); for (int i = 0; i < W.getRow(); i++) { for (int j = 0; j < W.getColumn(); j++) { String valueStr = W.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } }
public void printMatrixIntoFile(Matrix matrix) { for (int i = 0; i < matrix.getRow(); i++) { for (int j = 0; j < matrix.getColumn(); j++) { BigDecimal b = matrix.getValuePos(i, j); wr.append(b + ";"); // String valueStr = matrix.getValuePos(i, j).toString(); // valueStr = valueStr.replace(".", ","); // wr.append(valueStr+ ";"); //Siguiente celda } wr.append("\n"); // Salto de fila en excel } }
// pre: el fichero debe de existir y estar abierto e inicializado // Escribe en un fichero excel la información global obtenida en una iteración. // iteration: entero que identifica la iteración en la que estamos // Matrices resultantes de la iteración (con las que hemos calculado el error) // error: error ponderado de la iteración public void writeOneIterationInf(int iteration, BigDecimal error, Matrix W, Matrix V) { wr.append("Iteration: ;" + iteration + "\n"); wr.append("Matriz W resultante: \n"); for (int i = 0; i < W.getRow(); i++) { for (int j = 0; j < W.getColumn(); j++) { String valueStr = W.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } wr.append("Matriz V resultante: \n"); for (int i = 0; i < V.getRow(); i++) { for (int j = 0; j < V.getColumn(); j++) { String valueStr = V.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); } wr.append("\n"); } wr.append("Error ponderado: ;" + error + "\n\n"); }
// Escribe la información correspondiente al entrenamiento de un patrón. // idPatron: identificador del patrón que estamos entrenando actualmente // W y V iniciales antes de la actualización // inputLayer: Vector que contiene las neuronas de la capa de entrada del patrón // hiddenLayer: Vector que contiene las neuronas de capa oculta del patrón // outputLayer: Vector que contiene las neuronas de capa de salida del patrón // desiredOutputLayer: Vector que contiene los VALORES que representan a las salidas deseadas // mDeltaOutput: Matriz que representa a los delta de la capa de salida // mDeltaHidden: Matriz que representa a los delta de la capa oculta // deltaW: Matriz que representa el incremento a añadir a la matriz W (multiplicado ya por el // coeficiente de aprendizaje) // deltaV: Matriz que representa el incremento a añadir a la matriz V public void writeInfPatron( int idPatron, Matrix W, Matrix V, Neuron[] inputLayer, BigDecimal[] desiredOutputLayer, Neuron[] hiddenLayer, OutputNeuron[] outputLayer, Matrix mDeltaOutput, Matrix mDeltaHidden, Matrix deltaW, Matrix deltaV) { wr.append("\nPatrón número :" + idPatron + "\n"); wr.append("\nInputs: \n"); for (Neuron i : inputLayer) { wr.append(i.getOutValue() + ";"); } wr.append("\n Matriz W: \n"); for (int i = 0; i < W.getRow(); i++) { for (int j = 0; j < W.getColumn(); j++) { String valueStr = W.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } wr.append("Matriz V: \n"); for (int i = 0; i < V.getRow(); i++) { for (int j = 0; j < V.getColumn(); j++) { String valueStr = V.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); } wr.append("\n"); } wr.append("\n Valores ocultas: \n"); for (Neuron i : hiddenLayer) { wr.append(i.getOutValue().setScale(Manager.PRECISION, RoundingMode.HALF_UP) + ";"); } wr.append("\n Valores salidas: \n"); for (Neuron i : outputLayer) { wr.append(i.getOutValue().setScale(Manager.PRECISION, RoundingMode.HALF_UP) + ";"); } wr.append("\n Salidas deseadas: \n"); for (BigDecimal b : desiredOutputLayer) { wr.append(b + ";"); } wr.append("\n DeltaE capa de salida: \n"); for (int i = 0; i < mDeltaOutput.getRow(); i++) { for (int j = 0; j < mDeltaOutput.getColumn(); j++) { String valueStr = mDeltaOutput.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } wr.append("DeltaE capa oculta: "); for (int i = 0; i < mDeltaHidden.getRow(); i++) { for (int j = 0; j < mDeltaHidden.getColumn(); j++) { String valueStr = mDeltaHidden.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); } wr.append("\n"); } wr.append("Delta W: \n"); for (int i = 0; i < deltaW.getRow(); i++) { for (int j = 0; j < deltaW.getColumn(); j++) { String valueStr = deltaW.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); // Siguiente celda } wr.append("\n"); // Salto de fila en excel } wr.append("Delta V: "); for (int i = 0; i < deltaV.getRow(); i++) { for (int j = 0; j < deltaV.getColumn(); j++) { String valueStr = deltaV.getValuePos(i, j).toString(); valueStr = valueStr.replace(".", ","); wr.append(valueStr + ";"); } wr.append("\n"); } }