Skip to content

Commit 6c29c1e

Browse files
committed
rudimentary fix towards alexlenail#20
leaves some room in the middle of the input layer; you still have to put ellipsis symbol yourself in inkscape :-/
1 parent 37ff73b commit 6c29c1e

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

FCNN.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ function FCNN() {
4545
var showLabels = true;
4646
var showArrowheads = false;
4747
var arrowheadStyle = "empty";
48+
var drawDots = true;
4849

4950
let sup_map = {'0': '⁰', '1': '¹', '2': '²', '3': '³', '4': '⁴', '5': '⁵', '6': '⁶', '7': '⁷', '8': '⁸', '9': '⁹'};
5051
let sup = (s) => Array.prototype.map.call(s, (d) => (d in sup_map && sup_map[d]) || d).join('');
5152

52-
let textFn = (layer_index, layer_width) => ((layer_index === 0 ? "Input" : (layer_index === architecture.length-1 ? "Output" : "Hidden")) + " Layer ∈ ℝ" + sup(layer_width.toString()));
53+
let textFn = (layer_index, layer_width) => ((layer_index === 0 ? "Eingabes" : (layer_index === architecture.length-1 ? "Ausgabes" : "Innere S")) + "chicht ∈ ℝ" + sup(layer_width.toString()));
5354
var nominal_text_size = 12;
5455
var textWidth = 70;
5556

@@ -114,19 +115,21 @@ function FCNN() {
114115
.style("font-size", nominal_text_size+"px")
115116
.merge(text)
116117
.text(function(d) { return (showLabels ? d.text : ""); });
117-
118118
style();
119119
}
120120

121121
function redistribute({betweenNodesInLayer_=betweenNodesInLayer,
122122
betweenLayers_=betweenLayers,
123-
nnDirection_=nnDirection}={}) {
123+
nnDirection_=nnDirection,
124+
drawDots_=drawDots}={}) {
124125

125126
betweenNodesInLayer = betweenNodesInLayer_;
126127
betweenLayers = betweenLayers_;
127128
nnDirection = nnDirection_;
129+
drawDots = drawDots_;
130+
128131

129-
layer_widths = architecture.map((layer_width, i) => layer_width * nodeDiameter + (layer_width - 1) * betweenNodesInLayer[i])
132+
layer_widths = architecture.map((layer_width, i) => layer_width * nodeDiameter + (layer_width - 1) * betweenNodesInLayer[i] + (drawDots && i == 0 ? 70 : 0))
130133

131134
largest_layer_width = Math.max(...layer_widths);
132135

@@ -135,7 +138,7 @@ function FCNN() {
135138
let indices_from_id = (id) => id.split('_').map(x => parseInt(x));
136139

137140
let x = (layer, node_index) => layer * (betweenLayers + nodeDiameter) + w/2 - (betweenLayers * layer_offsets.length/3);
138-
let y = (layer, node_index) => layer_offsets[layer] + node_index * (nodeDiameter + betweenNodesInLayer[layer]) + h/2 - largest_layer_width/2;
141+
let y = (layer, node_index) => layer_offsets[layer] + node_index * (nodeDiameter + betweenNodesInLayer[layer]) + h/2 - largest_layer_width/2 + ((drawDots && node_index >= architecture[0] / 2 && layer == 0) ? 70 : 0);
139142

140143
let xt = (layer, node_index) => layer_offsets[layer] + node_index * (nodeDiameter + betweenNodesInLayer[layer]) + w/2 - largest_layer_width/2;
141144
let yt = (layer, node_index) => layer * (betweenLayers + nodeDiameter) + h/2 - (betweenLayers * layer_offsets.length/3);

index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ <h4>Architecture:</h4>
211211
<input type="number" class="form-control" name="numberOfNodes" step="1" value="16" />
212212
</div>
213213
<input type="range" class="form-control col-4" name="betweenNodesInLayer" min="0" max="100" step="1" value="20" style="position: relative; top: -4px;">
214+
<input type="checkbox" id="drawDots" name="drawDots" value="drawDots" checked><label for="drawDots">Draw dots</label>
214215
</div>
215216
<div class="row entry">
216217
<div class="input-group mb-2 mr-sm-2 col-4">
@@ -306,6 +307,7 @@ <h4>Architecture:</h4>
306307
$("#showLabels").change( function() { fcnn.redraw({'showLabels_': this.checked}) });
307308
$("#showArrowheads").change( function() { fcnn.style({'showArrowheads_': this.checked}) });
308309
$("#arrowhead input:radio").change( function() { fcnn.style({'arrowheadStyle_': this.value}) });
310+
$("#drawDots").change( function() { fcnn.redraw({'drawDots_': this.checked}); fcnn.redistribute(); });
309311

310312

311313
/////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)