Skip to content

Commit 447bc8f

Browse files
sqrt vector length scale for LeNet (#64)
1 parent e65a5b1 commit 447bc8f

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

LeNet.html

+30-2
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@ <h4>Style:</h4>
122122
<input type="checkbox" id="showLabels" name="showLabels" value="showLabels" checked>
123123
<label for="showLabels">Show Layer Labels</label>
124124
</div>
125+
126+
<hr>
127+
<div></div>
128+
<input type="checkbox" id="sqrtLength" name="sqrtLength" value="sqrtLength">
129+
<label for="sqrtLength">Sqrt Vector Length Scaling</label>
130+
</div>
131+
<div>
132+
<label for="lengthScale">Length Size Scaling</label>
133+
<input type="range" id="lengthScale" name="" min="1" max="200" step="1" value="100" style="position: relative; top: 3px;">
134+
<span id="lengthSpan">100</span>
135+
<span>%</span>
136+
</div>
125137

126138
<hr>
127139
<h4>Architecture:</h4>
@@ -204,7 +216,7 @@ <h4>Architecture:</h4>
204216
</div>
205217

206218
</div>
207-
219+
208220
<hr>
209221
<div id="architecture2">
210222
<p>Vector Length</p>
@@ -264,8 +276,12 @@ <h4>Architecture:</h4>
264276
betweenLayers = $('#architecture').find('input[type="range"]').map((i,el) => $(el).val()).get().filter(input => $.isNumeric(input)).map(s => parseInt(s)); betweenLayers.pop();
265277

266278
architecture2 = $('#architecture2').find('input').map((i,el) => $(el).val()).get().filter(input => $.isNumeric(input)).map(s => parseInt(s));
279+
280+
sqrtLength = $('#sqrtLength').prop('checked');
281+
lengthScale = parseFloat($('#lengthScale').prop('value'));
282+
267283

268-
lenet.redraw({'architecture_':architecture, 'architecture2_':architecture2});
284+
lenet.redraw({'architecture_':architecture, 'architecture2_':architecture2, 'sqrtLength_': sqrtLength, 'lengthScale_': lengthScale});
269285
lenet.redistribute({'betweenLayers_':betweenLayers});
270286

271287
}
@@ -363,6 +379,18 @@ <h4>Architecture:</h4>
363379
restart();
364380
});
365381

382+
$(document).on('change', '#sqrtLength', function(e) {
383+
e.preventDefault();
384+
385+
restart();
386+
});
387+
388+
$(document).on('change', '#lengthScale', function(e) {
389+
e.preventDefault();
390+
$("#lengthSpan").text(e.target.value)
391+
restart();
392+
});
393+
366394

367395
d3.select("#download").on("click", function() {
368396
// ga('send', 'event', 'downloadSVG', 'LeNet');

LeNet.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,17 @@ function LeNet() {
2222
var betweenLayersDefault = 12;
2323

2424
var architecture = [];
25+
var architecture2 = [];
2526
var lenet = {};
2627
var layer_offsets = [];
2728
var largest_layer_width = 0;
2829
var showLabels = true;
2930

31+
var sqrtLength = false;
32+
var lengthScale = 100;
33+
34+
let lengthFn = (length) => sqrtLength ? (Math.sqrt(length) * lengthScale/10) : (length * lengthScale/100);
35+
3036
let textFn = (layer) => (typeof(layer) === "object" ? layer['numberOfSquares']+'@'+layer['squareHeight']+'x'+layer['squareWidth'] : "1x"+layer)
3137

3238
var rect, conv, link, poly, line, text, info;
@@ -36,10 +42,14 @@ function LeNet() {
3642
/////////////////////////////////////////////////////////////////////////////
3743

3844
function redraw({architecture_=architecture,
39-
architecture2_=architecture2}={}) {
45+
architecture2_=architecture2,
46+
sqrtLength_=sqrtLength,
47+
lengthScale_=lengthScale,}={}) {
4048

4149
architecture = architecture_;
4250
architecture2 = architecture2_;
51+
sqrtLength = sqrtLength_;
52+
lengthScale = lengthScale_;
4353

4454
lenet.rects = architecture.map((layer, layer_index) => range(layer['numberOfSquares']).map(rect_index => {return {'id':layer_index+'_'+rect_index,'layer':layer_index,'rect_index':rect_index,'width':layer['squareWidth'],'height':layer['squareHeight']}}));
4555
lenet.rects = flatten(lenet.rects);
@@ -50,7 +60,7 @@ function LeNet() {
5060
lenet.conv_links = lenet.convs.map(conv => {return [Object.assign({'id':'link_'+conv['layer']+'_0','i':0},conv), Object.assign({'id':'link_'+conv['layer']+'_1','i':1},conv)]});
5161
lenet.conv_links = flatten(lenet.conv_links);
5262

53-
lenet.fc_layers = architecture2.map((size, fc_layer_index) => {return {'id': 'fc_'+fc_layer_index, 'layer':fc_layer_index+architecture.length, 'size':size/Math.sqrt(2)}});
63+
lenet.fc_layers = architecture2.map((size, fc_layer_index) => {return {'id': 'fc_'+fc_layer_index, 'layer':fc_layer_index+architecture.length, 'size': lengthFn(size)}});
5464
lenet.fc_links = lenet.fc_layers.map(fc => { return [Object.assign({'id':'link_'+fc['layer']+'_0','i':0,'prevSize':10},fc), Object.assign({'id':'link_'+fc['layer']+'_1','i':1,'prevSize':10},fc)]});
5565
lenet.fc_links = flatten(lenet.fc_links);
5666

0 commit comments

Comments
 (0)