From 3a7831ed8397c65852c9ed9eee33f1d592378943 Mon Sep 17 00:00:00 2001
From: Size43
Date: Thu, 21 May 2015 22:22:51 +0200
Subject: Added writeObject & readObject methods
---
app/src/main/AndroidManifest.xml | 2 +
.../java/org/rssin/android/FiltersActivity.java | 11 ++--
.../main/java/org/rssin/android/FiltersList.java | 14 +++++
.../main/java/org/rssin/neurons/FeedSorter.java | 51 +++++++++++++---
.../java/org/rssin/neurons/MultiNeuralNetwork.java | 15 ++++-
.../main/java/org/rssin/neurons/NeuralNetwork.java | 16 ++++-
app/src/main/java/org/rssin/neurons/Neuron.java | 14 ++++-
.../java/org/rssin/neurons/SerializationTools.java | 69 ++++++++++++++++++++++
8 files changed, 174 insertions(+), 18 deletions(-)
mode change 100644 => 100755 app/src/main/AndroidManifest.xml
mode change 100644 => 100755 app/src/main/java/org/rssin/android/FiltersActivity.java
mode change 100644 => 100755 app/src/main/java/org/rssin/android/FiltersList.java
create mode 100755 app/src/main/java/org/rssin/neurons/SerializationTools.java
(limited to 'app/src/main')
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
old mode 100644
new mode 100755
index e4f63c3..4e125b5
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
package="org.rssin.rssin" >
+
+
trainingCases = new ArrayList<>();
-
- private final int[] isNthMonthInput = new int[12];
- private final int[] isNthWeekDayInput = new int[7];
- private final int isMorning, isAfternoon, isEvening, isNight, biasInput;
- private final Hashtable categoryInputs = new Hashtable<>();
- private final Hashtable wordInputs = new Hashtable<>();
- private final Hashtable authorInputs = new Hashtable<>();
+ private MultiNeuralNetwork nn = new MultiNeuralNetwork(25, 50);
+ private List trainingCases = new ArrayList<>();
+
+ private int[] isNthMonthInput = new int[12];
+ private int[] isNthWeekDayInput = new int[7];
+ private int isMorning, isAfternoon, isEvening, isNight, biasInput;
+ private Hashtable categoryInputs = new Hashtable<>();
+ private Hashtable wordInputs = new Hashtable<>();
+ private Hashtable authorInputs = new Hashtable<>();
+
+ private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+ stream.writeObject(nn);
+ stream.writeObject(trainingCases);
+ SerializationTools.writeArray(isNthMonthInput, stream);
+ SerializationTools.writeArray(isNthWeekDayInput, stream);
+ stream.writeInt(isMorning);
+ stream.writeInt(isAfternoon);
+ stream.writeInt(isEvening);
+ stream.writeInt(isNight);
+ stream.writeInt(biasInput);
+ stream.writeObject(categoryInputs);
+ stream.writeObject(wordInputs);
+ stream.writeObject(authorInputs);
+ }
+
+ private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+ nn = (MultiNeuralNetwork) stream.readObject();
+ trainingCases = (List) stream.readObject();
+ isNthMonthInput = SerializationTools.readArrayInt(stream);
+ isNthWeekDayInput = SerializationTools.readArrayInt(stream);
+ isMorning = stream.readInt();
+ isAfternoon = stream.readInt();
+ isEvening = stream.readInt();
+ isNight = stream.readInt();
+ biasInput = stream.readInt();
+ categoryInputs = (Hashtable) stream.readObject();
+ wordInputs = (Hashtable) stream.readObject();
+ authorInputs = (Hashtable) stream.readObject();
+ }
public FeedSorter() {
biasInput = nn.addInput();
diff --git a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
index 03ad2d1..68ddddd 100755
--- a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
@@ -1,6 +1,11 @@
package org.rssin.neurons;
+import android.util.Log;
+
+import java.io.IOException;
import java.io.Serializable;
+import java.util.Hashtable;
+import java.util.List;
/**
* @author Jos
@@ -8,7 +13,15 @@ import java.io.Serializable;
*/
class MultiNeuralNetwork implements Serializable {
private static final long serialVersionUID = 0;
- private final NeuralNetwork[] networks;
+ private NeuralNetwork[] networks;
+
+ private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+ SerializationTools.writeArray(networks, stream);
+ }
+
+ private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+ networks = SerializationTools.readArray(stream, NeuralNetwork.class);
+ }
public MultiNeuralNetwork(int numNetworks, int numHiddenNodes) {
networks = new NeuralNetwork[numNetworks];
diff --git a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
index 0acfda7..0540652 100755
--- a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
@@ -1,7 +1,9 @@
package org.rssin.neurons;
import android.annotation.SuppressLint;
+import android.util.Log;
+import java.io.IOException;
import java.io.Serializable;
/**
@@ -9,8 +11,18 @@ import java.io.Serializable;
*/
class NeuralNetwork implements Serializable {
private static final long serialVersionUID = 0;
- private final Neuron[] hiddenNodes;
- private final Neuron outputNode;
+ private Neuron[] hiddenNodes;
+ private Neuron outputNode;
+
+ private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+ SerializationTools.writeArray(hiddenNodes, stream);
+ stream.writeObject(outputNode);
+ }
+
+ private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+ hiddenNodes = SerializationTools.readArray(stream, Neuron.class);
+ outputNode = (Neuron) stream.readObject();
+ }
NeuralNetwork(int numHiddenNodes) {
if (numHiddenNodes < 1) {
diff --git a/app/src/main/java/org/rssin/neurons/Neuron.java b/app/src/main/java/org/rssin/neurons/Neuron.java
index 23f69e1..ec4bf2c 100755
--- a/app/src/main/java/org/rssin/neurons/Neuron.java
+++ b/app/src/main/java/org/rssin/neurons/Neuron.java
@@ -1,5 +1,8 @@
package org.rssin.neurons;
+import android.util.Log;
+
+import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -12,7 +15,16 @@ class Neuron implements Serializable {
private static final long serialVersionUID = 0;
private static final Random r = new Random();
- private final List weights = new ArrayList<>();
+ private List weights = new ArrayList<>();
+
+ private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+ SerializationTools.writeList(weights, stream);
+ }
+
+ private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+ weights = SerializationTools.readList(stream);
+ }
+
public Neuron() {
}
diff --git a/app/src/main/java/org/rssin/neurons/SerializationTools.java b/app/src/main/java/org/rssin/neurons/SerializationTools.java
new file mode 100755
index 0000000..41e79f2
--- /dev/null
+++ b/app/src/main/java/org/rssin/neurons/SerializationTools.java
@@ -0,0 +1,69 @@
+package org.rssin.neurons;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Jos.
+ */
+public class SerializationTools {
+ public static void writeArray(int[] array, ObjectOutputStream stream) throws IOException {
+ stream.write(array.length);
+ for(int i : array)
+ {
+ stream.write(i);
+ }
+ }
+
+ public static int[] readArrayInt(ObjectInputStream stream) throws IOException {
+ int[] array = new int[stream.readInt()];
+ for(int i = 0; i < array.length; i++)
+ {
+ array[i] = stream.readInt();
+ }
+
+ return array;
+ }
+
+ public static void writeArray(T[] array, ObjectOutputStream stream) throws IOException {
+ stream.write(array.length);
+ for(T i : array)
+ {
+ stream.writeObject(i);
+ }
+ }
+
+ public static T[] readArray(ObjectInputStream stream, Class c) throws IOException, ClassNotFoundException {
+ T[] array = (T[]) Array.newInstance(c, stream.readInt());
+ for(int i = 0; i < array.length; i++)
+ {
+ array[i] = (T) stream.readObject();
+ }
+
+ return array;
+ }
+
+ public static void writeList(List list, ObjectOutputStream stream) throws IOException {
+ stream.write(list.size());
+ for(T i : list)
+ {
+ stream.writeObject(i);
+ }
+ }
+
+ public static List readList(ObjectInputStream stream) throws IOException, ClassNotFoundException {
+ List array = new ArrayList<>();
+ int count = stream.readInt();
+
+ for(int i = 0; i < count; i++)
+ {
+ array.add((T) stream.readObject());
+ }
+
+ return array;
+ }
+}
--
cgit v1.2.3