SHOW:
|
|
- or go back to the newest paste.
1 | somPEs <- 36 # user defined constant specific to dataset dimensionality | |
2 | inputPEs <- 6; # arbitrary constant specific to dataset dimensionality | |
3 | hm <- matrix(c(c(1:8),rep(0,somPEs-length(c(1:8)))), nrow=sqrt(somPEs), ncol=sqrt(somPEs)) | |
4 | hm2 <- as.vector(matrix(hm, byrow=TRUE)) | |
5 | initial_w <- matrix(1, nrow=somPEs, ncol=inputPEs) | |
6 | w <- t(apply(initial_w, 1, function(i) runif(i))); | |
7 | ||
8 | # Do fences, weight distances. | |
9 | fence_edges = matrix(0, nrow=somPEs, ncol=4); # cols are top, bottom, left, right borders of each somPE | |
10 | fence_diagonals = matrix(0, nrow=somPEs, ncol=4); # cols are top left, top right, bottom left, bottom right | |
11 | # Reshape w to a 3D matrix of dimension: c(sqrt(somPEs), sqrt(somPEs), inputPEs) | |
12 | dim(w) <- c(sqrt(somPEs), sqrt(somPEs), inputPEs) | |
13 | w <- aperm(w, c(2, 1, 3)) | |
14 | ||
15 | # Plot weight distance between adjacent somPEs in all directions in grayscale | |
16 | it = 1; | |
17 | for (i in 1:sqrt(somPEs)) { | |
18 | for (j in 1:sqrt(somPEs)) { | |
19 | if (i>1 && i<sqrt(somPEs)) { | |
20 | if (j>1 && j<sqrt(somPEs)) { | |
21 | for (k in 1:inputPEs) { | |
22 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
23 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
24 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
25 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
26 | fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k])); | |
27 | fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k])); | |
28 | fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k])); | |
29 | fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k])); | |
30 | } | |
31 | } else if (j==1) { | |
32 | for (k in 1:inputPEs) { | |
33 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
34 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
35 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
36 | fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k])); | |
37 | fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k])); | |
38 | } | |
39 | } else { # j==10 | |
40 | for (k in 1:inputPEs) { | |
41 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
42 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
43 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
44 | fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k])); | |
45 | fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k])); | |
46 | } | |
47 | } | |
48 | - | cat(sprintf("I should be 1: %d, %d, %d", i, j, k)) |
48 | + | |
49 | if (j>1 && j<sqrt(somPEs)) { | |
50 | for (k in 1:inputPEs) { | |
51 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
52 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
53 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
54 | fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k])); | |
55 | fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k])); | |
56 | } | |
57 | } else if (j==1) { | |
58 | for (k in 1:inputPEs) { | |
59 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
60 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
61 | fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k])); | |
62 | } | |
63 | } else { # j==10 | |
64 | for (k in 1:inputPEs) { | |
65 | fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k])); | |
66 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
67 | fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k])); | |
68 | } | |
69 | } | |
70 | } else { # i==10 | |
71 | - | cat(sprintf("I should be 10: %d", i)) |
71 | + | |
72 | for (k in 1:inputPEs) { | |
73 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
74 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
75 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
76 | fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k])); | |
77 | fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k])); | |
78 | } | |
79 | } else if (j==1) { | |
80 | for (k in 1:inputPEs) { | |
81 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
82 | fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k])); | |
83 | fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k])); | |
84 | } | |
85 | } else { # j==10 | |
86 | for (k in 1:inputPEs) { | |
87 | fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k])); | |
88 | fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k])); | |
89 | fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k])); | |
90 | } | |
91 | } | |
92 | } | |
93 | it=it+1; | |
94 | } | |
95 | } | |
96 | mxEdges = max(max(fence_edges)); | |
97 | mxDiagonals = max(max(fence_diagonals)); | |
98 | fence_edges = fence_edges/mxEdges; | |
99 | fence_diagonals = fence_diagonals/mxDiagonals; |