-
Notifications
You must be signed in to change notification settings - Fork 0
/
PatternRecognitionSample.java
66 lines (50 loc) · 2.22 KB
/
PatternRecognitionSample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package samples;
import rwa.patrec.NeuralPatternDetector;
import rwa.patrec.PatternDetector;
import util.patgen.Pattern;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class PatternRecognitionSample {
public static final String delimiter = ";";
public static final int maxNeuronSize = 100;
public static final int patternSize = 10;
public static final int patternLength = 100;
public static int[] inputArray;
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws InterruptedException, IOException {
Pattern knownPattern = Pattern.randomized(patternSize, patternLength, 5);
Pattern unknownPattern = Pattern.randomized(patternSize, patternLength, 5);
PatternDetector detector = new NeuralPatternDetector(maxNeuronSize);
for (int idx = 0; idx < patternSize; idx++) {
int channelIdx = idx;
detector.addAdaptiveDictChannel(() -> inputArray[channelIdx], Set.of(0));
}
for (int[] ints : knownPattern) {
inputArray = ints;
int[] recognizedPatternIds = detector.next();
sbLog(inputArray, recognizedPatternIds);
}
detector.reset();
for (int[] ints : unknownPattern) {
inputArray = ints;
int[] recognizedPatternIds = detector.next();
sbLog(inputArray, recognizedPatternIds);
}
detector.reset();
for (int[] ints : knownPattern) {
inputArray = ints;
int[] recognizedPatternIds = detector.next();
sbLog(inputArray, recognizedPatternIds);
}
Files.write(Path.of("src/main/resources/logs/patrec_output.csv"), sb.toString().getBytes());
}
private static void sbLog(int[] inputArray, int[] recognizedPatternIds) {
sb.append(Arrays.stream(inputArray).mapToObj(String::valueOf).collect(Collectors.joining(delimiter))).append(delimiter)
.append(Arrays.stream(recognizedPatternIds).mapToObj(String::valueOf).collect(Collectors.joining(delimiter))).append(delimiter)
.append("\n");
}
}