Author: edwardyoon
Date: Fri Sep 27 03:34:49 2013
New Revision: 1526783

URL: http://svn.apache.org/r1526783
Log:
Minor fix

Modified:
    
hama/trunk/examples/src/main/java/org/apache/hama/examples/NeuralNetwork.java
    
hama/trunk/examples/src/test/java/org/apache/hama/examples/NeuralNetworkTest.java

Modified: 
hama/trunk/examples/src/main/java/org/apache/hama/examples/NeuralNetwork.java
URL: 
http://svn.apache.org/viewvc/hama/trunk/examples/src/main/java/org/apache/hama/examples/NeuralNetwork.java?rev=1526783&r1=1526782&r2=1526783&view=diff
==============================================================================
--- 
hama/trunk/examples/src/main/java/org/apache/hama/examples/NeuralNetwork.java 
(original)
+++ 
hama/trunk/examples/src/main/java/org/apache/hama/examples/NeuralNetwork.java 
Fri Sep 27 03:34:49 2013
@@ -22,7 +22,6 @@ import java.io.BufferedWriter;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.URI;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -36,10 +35,9 @@ import org.apache.hama.ml.math.FunctionF
 
 /**
  * 
- *
  */
 public class NeuralNetwork {
-  
+
   public static void main(String[] args) throws Exception {
     if (args.length < 3) {
       printUsage();
@@ -51,24 +49,27 @@ public class NeuralNetwork {
         printUsage();
         return;
       }
-      
+
       String modelPath = args[1];
       String featureDataPath = args[2];
       String resultDataPath = args[3];
-      
+
       SmallLayeredNeuralNetwork ann = new SmallLayeredNeuralNetwork(modelPath);
-      
+
       // process data in streaming approach
-      FileSystem fs = FileSystem.get(new URI(featureDataPath), new 
Configuration());
-      BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(new 
Path(featureDataPath))));
+      FileSystem fs = FileSystem.get(new URI(featureDataPath),
+          new Configuration());
+      BufferedReader br = new BufferedReader(new InputStreamReader(
+          fs.open(new Path(featureDataPath))));
       Path outputPath = new Path(resultDataPath);
       if (fs.exists(outputPath)) {
         fs.delete(outputPath, true);
       }
-      BufferedWriter bw = new BufferedWriter(new 
OutputStreamWriter(fs.create(outputPath)));
-      
+      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+          fs.create(outputPath)));
+
       String line = null;
-      
+
       while ((line = br.readLine()) != null) {
         if (line.trim().length() == 0) {
           continue;
@@ -86,18 +87,16 @@ public class NeuralNetwork {
           sb.append(arrResult[i]);
           if (i != arrResult.length - 1) {
             sb.append(",");
-          }
-          else {
+          } else {
             sb.append("\n");
           }
         }
         bw.write(sb.toString());
       }
-      
+
       br.close();
       bw.close();
-    }
-    else if (mode.equals("train")) {
+    } else if (mode.equals("train")) {
       if (args.length < 5) {
         printUsage();
         return;
@@ -105,22 +104,23 @@ public class NeuralNetwork {
 
       String trainingDataPath = args[1];
       String trainedModelPath = args[2];
-      
+
       int featureDimension = Integer.parseInt(args[3]);
       int labelDimension = Integer.parseInt(args[4]);
-      
+
       int iteration = 1000;
       double learningRate = 0.4;
       double momemtumWeight = 0.2;
       double regularizationWeight = 0.01;
-      
+
       // parse parameters
       if (args.length >= 6) {
         try {
           iteration = Integer.parseInt(args[5]);
           System.out.printf("Iteration: %d\n", iteration);
         } catch (NumberFormatException e) {
-          System.err.println("MAX_ITERATION format invalid. It should be a 
positive number.");
+          System.err
+              .println("MAX_ITERATION format invalid. It should be a positive 
number.");
           return;
         }
       }
@@ -129,7 +129,8 @@ public class NeuralNetwork {
           learningRate = Double.parseDouble(args[6]);
           System.out.printf("Learning rate: %f\n", learningRate);
         } catch (NumberFormatException e) {
-          System.err.println("LEARNING_RATE format invalid. It should be a 
positive double in range (0, 1.0)");
+          System.err
+              .println("LEARNING_RATE format invalid. It should be a positive 
double in range (0, 1.0)");
           return;
         }
       }
@@ -138,21 +139,24 @@ public class NeuralNetwork {
           momemtumWeight = Double.parseDouble(args[7]);
           System.out.printf("Momemtum weight: %f\n", momemtumWeight);
         } catch (NumberFormatException e) {
-          System.err.println("MOMEMTUM_WEIGHT format invalid. It should be a 
positive double in range (0, 1.0)");
+          System.err
+              .println("MOMEMTUM_WEIGHT format invalid. It should be a 
positive double in range (0, 1.0)");
           return;
         }
       }
       if (args.length >= 9) {
         try {
           regularizationWeight = Double.parseDouble(args[8]);
-          System.out.printf("Regularization weight: %f\n", 
regularizationWeight);
+          System.out
+              .printf("Regularization weight: %f\n", regularizationWeight);
         } catch (NumberFormatException e) {
-          System.err.println("REGULARIZATION_WEIGHT format invalid. It should 
be a positive double in range (0, 1.0)");
+          System.err
+              .println("REGULARIZATION_WEIGHT format invalid. It should be a 
positive double in range (0, 1.0)");
           return;
         }
       }
-      
-      //  train the model
+
+      // train the model
       SmallLayeredNeuralNetwork ann = new SmallLayeredNeuralNetwork();
       ann.setLearningRate(learningRate);
       ann.setMomemtumWeight(momemtumWeight);
@@ -161,7 +165,8 @@ public class NeuralNetwork {
           FunctionFactory.createDoubleFunction("Sigmoid"));
       ann.addLayer(featureDimension, false,
           FunctionFactory.createDoubleFunction("Sigmoid"));
-      ann.addLayer(labelDimension, true, 
FunctionFactory.createDoubleFunction("Sigmoid"));
+      ann.addLayer(labelDimension, true,
+          FunctionFactory.createDoubleFunction("Sigmoid"));
       ann.setCostFunction(FunctionFactory
           .createDoubleDoubleFunction("CrossEntropy"));
       ann.setModelPath(trainedModelPath);
@@ -173,25 +178,38 @@ public class NeuralNetwork {
       trainingParameters.put("convergence.check.interval", "1000");
       ann.train(new Path(trainingDataPath), trainingParameters);
     }
-    
+
   }
-  
+
   private static void printUsage() {
-    System.out.println("USAGE: <MODE> <INPUT_PATH> <OUTPUT_PATH> 
<MODEL_PATH>|<FEATURE_DIMENSION> <LABEL_DIMENSION> [<MAX_ITERATION> 
<LEARNING_RATE> <MOMEMTUM_WEIGHT> <REGULARIZATION_WEIGHT>]");
-    System.out.println("\tMODE\t- train: train the model with given training 
data.");
-    System.out.println("\t\t- evaluate: obtain the result by feeding the 
features to the neural network.");
-    System.out.println("\tINPUT_PATH\tin 'train' mode, it is the path of the 
training data; in 'evaluate' mode, it is the path of the to be evaluated data 
that lacks the label.");
-    System.out.println("\tOUTPUT_PATH\tin 'train' mode, it is where the 
trained model is stored; in 'evaluate' mode, it is where the labeled data is 
stored.");
+    System.out
+        .println("USAGE: <MODE> <INPUT_PATH> <OUTPUT_PATH> 
<MODEL_PATH>|<FEATURE_DIMENSION> <LABEL_DIMENSION> [<MAX_ITERATION> 
<LEARNING_RATE> <MOMEMTUM_WEIGHT> <REGULARIZATION_WEIGHT>]");
+    System.out
+        .println("\tMODE\t- train: train the model with given training data.");
+    System.out
+        .println("\t\t- evaluate: obtain the result by feeding the features to 
the neural network.");
+    System.out
+        .println("\tINPUT_PATH\tin 'train' mode, it is the path of the 
training data; in 'evaluate' mode, it is the path of the to be evaluated data 
that lacks the label.");
+    System.out
+        .println("\tOUTPUT_PATH\tin 'train' mode, it is where the trained 
model is stored; in 'evaluate' mode, it is where the labeled data is stored.");
     System.out.println("\n\tConditional Parameters:");
-    System.out.println("\tMODEL_PATH\tonly required in 'evaluate' mode. It 
specifies where to load the trained neural network model.");
-    System.out.println("\tMAX_ITERATION\tonly used in 'train' mode. It 
specifies how many iterations for the neural network to run. Default is 0.01.");
-    System.out.println("\tLEARNING_RATE\tonly used to 'train' mode. It 
specifies the degree of aggregation for learning, usually in range (0, 1.0). 
Default is 0.1.");
-    System.out.println("\tMOMEMTUM_WEIGHT\tonly used to 'train' mode. It 
specifies the weight of momemtum. Default is 0.");
-    System.out.println("\tREGULARIZATION_WEIGHT\tonly required in 'train' 
model. It specifies the weight of reqularization.");
+    System.out
+        .println("\tMODEL_PATH\tonly required in 'evaluate' mode. It specifies 
where to load the trained neural network model.");
+    System.out
+        .println("\tMAX_ITERATION\tonly used in 'train' mode. It specifies how 
many iterations for the neural network to run. Default is 0.01.");
+    System.out
+        .println("\tLEARNING_RATE\tonly used to 'train' mode. It specifies the 
degree of aggregation for learning, usually in range (0, 1.0). Default is 
0.1.");
+    System.out
+        .println("\tMOMEMTUM_WEIGHT\tonly used to 'train' mode. It specifies 
the weight of momemtum. Default is 0.");
+    System.out
+        .println("\tREGULARIZATION_WEIGHT\tonly required in 'train' model. It 
specifies the weight of reqularization.");
     System.out.println("\nExample:");
-    System.out.println("Train a neural network with default 
setting:\n\tneuralnets train hdfs://localhost:30002/training_data 
hdfs://localhost:30002/model 8 1");
-    System.out.println("Train a neural network by specify learning rate as 
0.1, momemtum rate as 0.2, and regularization weight as 
0.01:\n\tneuralnets.train hdfs://localhost:30002/training_data 
hdfs://localhost:30002/model 0.1 0.2 0.01");
-    System.out.println("Label the data with trained model:\n\tneuralnets 
evaluate hdfs://localhost:30002/unlabeled_data hdfs://localhost:30002/result 
hdfs://localhost:30002/model");
+    System.out
+        .println("Train a neural network with default setting:\n\tneuralnets 
train hdfs://localhost:30002/training_data hdfs://localhost:30002/model 8 1");
+    System.out
+        .println("Train a neural network by specify learning rate as 0.1, 
momemtum rate as 0.2, and regularization weight as 0.01:\n\tneuralnets.train 
hdfs://localhost:30002/training_data hdfs://localhost:30002/model 0.1 0.2 
0.01");
+    System.out
+        .println("Label the data with trained model:\n\tneuralnets evaluate 
hdfs://localhost:30002/unlabeled_data hdfs://localhost:30002/result 
hdfs://localhost:30002/model");
   }
 
 }

Modified: 
hama/trunk/examples/src/test/java/org/apache/hama/examples/NeuralNetworkTest.java
URL: 
http://svn.apache.org/viewvc/hama/trunk/examples/src/test/java/org/apache/hama/examples/NeuralNetworkTest.java?rev=1526783&r1=1526782&r2=1526783&view=diff
==============================================================================
--- 
hama/trunk/examples/src/test/java/org/apache/hama/examples/NeuralNetworkTest.java
 (original)
+++ 
hama/trunk/examples/src/test/java/org/apache/hama/examples/NeuralNetworkTest.java
 Fri Sep 27 03:34:49 2013
@@ -23,34 +23,42 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.SequenceFile;
+import org.apache.hama.HamaConfiguration;
 import org.apache.hama.ml.math.DenseDoubleVector;
 import org.apache.hama.ml.writable.VectorWritable;
-import org.junit.Test;
 
 /**
  * Test the functionality of NeuralNetwork Example.
  * 
  */
-public class NeuralNetworkTest {
+public class NeuralNetworkTest extends TestCase {
+  private Configuration conf = new HamaConfiguration();
+  private FileSystem fs;
+  private String MODEL_PATH = "/tmp/neuralnets.model";
+  private String RESULT_PATH = "/tmp/neuralnets.txt";
+  private String SEQTRAIN_DATA = "/tmp/test-neuralnets.data";
+  
+  @Override
+  protected void setUp() throws Exception {
+    super.setUp();
+    fs = FileSystem.get(conf);
+  }
 
-  @Test
-  public void testNeuralnetsLabeling() {
-    this.testNeuralNetworkTraining();
+  public void testNeuralnetsLabeling() throws IOException {
+    this.neuralNetworkTraining();
 
     String dataPath = "src/test/resources/neuralnets_classification_test.txt";
-    String modelPath = "/tmp/neuralnets.model";
-    String resultPath = "/tmp/neuralnets.txt";
     String mode = "label";
-    Configuration conf = new Configuration();
     try {
-      FileSystem fs = FileSystem.get(conf);
       NeuralNetwork
-          .main(new String[] { mode, modelPath, dataPath, resultPath });
+          .main(new String[] { mode, MODEL_PATH, dataPath, RESULT_PATH });
 
       // compare results with ground-truth
       BufferedReader groundTruthReader = new BufferedReader(new FileReader(
@@ -61,8 +69,9 @@ public class NeuralNetworkTest {
         groundTruthList.add(Double.parseDouble(line));
       }
       groundTruthReader.close();
-      
-      BufferedReader resultReader = new BufferedReader(new 
FileReader(resultPath));
+
+      BufferedReader resultReader = new BufferedReader(new FileReader(
+          RESULT_PATH));
       List<Double> resultList = new ArrayList<Double>();
       while ((line = resultReader.readLine()) != null) {
         resultList.add(Double.parseDouble(line));
@@ -78,22 +87,23 @@ public class NeuralNetworkTest {
         }
       }
       System.out.printf("Precision: %f\n", correct / total);
-      fs.delete(new Path(resultPath), true);
-      fs.delete(new Path(modelPath), true);
 
     } catch (Exception e) {
       e.printStackTrace();
+    } finally {
+      fs.delete(new Path(RESULT_PATH), true);
+      fs.delete(new Path(MODEL_PATH), true);
+      fs.delete(new Path(SEQTRAIN_DATA), true);
     }
   }
-  
-  private void testNeuralNetworkTraining() {
+
+  private void neuralNetworkTraining() {
     String mode = "train";
     String strTrainingDataPath = 
"src/test/resources/neuralnets_classification_training.txt";
-    String strSequenceTrainingDataPath = "/tmp/test-neuralnets.data";
     int featureDimension = 8;
     int labelDimension = 1;
 
-    Path sequenceTrainingDataPath = new Path(strSequenceTrainingDataPath);
+    Path sequenceTrainingDataPath = new Path(SEQTRAIN_DATA);
     Configuration conf = new Configuration();
     FileSystem fs;
     try {
@@ -119,13 +129,9 @@ public class NeuralNetworkTest {
       e1.printStackTrace();
     }
 
-    String modelPath = "/tmp/neuralnets.model";
     try {
-      NeuralNetwork.main(new String[] { mode, strSequenceTrainingDataPath,
-          modelPath, "" + featureDimension, "" + labelDimension });
-      fs = FileSystem.get(conf);
-      fs.delete(new Path(strSequenceTrainingDataPath), true);
-      fs.delete(new Path(modelPath), true);
+      NeuralNetwork.main(new String[] { mode, SEQTRAIN_DATA,
+          MODEL_PATH, "" + featureDimension, "" + labelDimension });
     } catch (Exception e) {
       e.printStackTrace();
     }


Reply via email to