fixing the build script and tweaking mnist demo tiny bit
This commit is contained in:
@@ -13,7 +13,6 @@
|
||||
<file name="convnet_layers_nonlinearities.js" />
|
||||
<file name="convnet_layers_dropout.js" />
|
||||
<file name="convnet_layers_normalization.js" />
|
||||
<file name="convnet_layers_transform.js" />
|
||||
<file name="convnet_net.js" />
|
||||
<file name="convnet_trainers.js" />
|
||||
<file name="convnet_magicnet.js" />
|
||||
|
||||
+24
-3
@@ -15,7 +15,7 @@
|
||||
padding: 10px;
|
||||
}
|
||||
.layer_act {
|
||||
width: 500px;
|
||||
width: 450px;
|
||||
float: right;
|
||||
}
|
||||
.ltconv {
|
||||
@@ -304,6 +304,18 @@ var visualize_activations = function(net, elt) {
|
||||
if(L.layer_type==='softmax' || L.layer_type==='fc') scale = 10; // for softmax
|
||||
draw_activations(activations_div, L.out_act, scale);
|
||||
|
||||
// visualize data gradients
|
||||
if(L.layer_type !== 'softmax') {
|
||||
var grad_div = document.createElement('div');
|
||||
grad_div.appendChild(document.createTextNode('Data Gradients:'));
|
||||
grad_div.appendChild(document.createElement('br'));
|
||||
grad_div.className = 'layer_grad';
|
||||
var scale = 2;
|
||||
if(L.layer_type==='softmax' || L.layer_type==='fc') scale = 10; // for softmax
|
||||
draw_activations(grad_div, L.out_act, scale, true);
|
||||
activations_div.appendChild(grad_div);
|
||||
}
|
||||
|
||||
// visualize filters if they are of reasonable size
|
||||
if(L.layer_type === 'conv') {
|
||||
var filters_div = document.createElement('div');
|
||||
@@ -312,14 +324,18 @@ var visualize_activations = function(net, elt) {
|
||||
filters_div.appendChild(document.createTextNode('Weights:'));
|
||||
filters_div.appendChild(document.createElement('br'));
|
||||
for(var j=0;j<L.filters.length;j++) {
|
||||
filters_div.appendChild(document.createTextNode('('));
|
||||
draw_activations(filters_div, L.filters[j], 2);
|
||||
filters_div.appendChild(document.createTextNode(')'));
|
||||
}
|
||||
// gradients
|
||||
filters_div.appendChild(document.createElement('br'));
|
||||
filters_div.appendChild(document.createTextNode('Gradients:'));
|
||||
filters_div.appendChild(document.createTextNode('Weight Gradients:'));
|
||||
filters_div.appendChild(document.createElement('br'));
|
||||
for(var j=0;j<L.filters.length;j++) {
|
||||
filters_div.appendChild(document.createTextNode('('));
|
||||
draw_activations(filters_div, L.filters[j], 2, true);
|
||||
filters_div.appendChild(document.createTextNode(')'));
|
||||
}
|
||||
} else {
|
||||
filters_div.appendChild(document.createTextNode('Weights hidden, too small'));
|
||||
@@ -353,6 +369,11 @@ var visualize_activations = function(net, elt) {
|
||||
layer_div.appendChild(document.createTextNode(t));
|
||||
layer_div.appendChild(document.createElement('br'));
|
||||
|
||||
var mma = maxmin(L.out_act.dw);
|
||||
var t = 'max gradient: ' + f2t(mma.maxv) + ', min: ' + f2t(mma.minv);
|
||||
layer_div.appendChild(document.createTextNode(t));
|
||||
layer_div.appendChild(document.createElement('br'));
|
||||
|
||||
// number of parameters
|
||||
if(L.layer_type==='conv') {
|
||||
var tot_params = L.sx*L.sy*L.in_depth*L.filters.length + L.filters.length;
|
||||
@@ -588,7 +609,7 @@ var change_net = function() {
|
||||
<h1>Training Stats</h1>
|
||||
<div class="divsec" style="270px;">
|
||||
<div class="secpart">
|
||||
Current image: <img id="input_image" src=""></img><input id="buttontp" type="submit" value="pause" onclick="toggle_pause();"/>
|
||||
<input id="buttontp" type="submit" value="pause" onclick="toggle_pause();" style="width: 100px; height:30px; background-color: #FCC;"/>
|
||||
<div id="trainstats"></div>
|
||||
|
||||
<div id="controls">
|
||||
|
||||
Reference in New Issue
Block a user