|
15 | 15 | padding: 10px;
|
16 | 16 | }
|
17 | 17 | .layer_act {
|
18 |
| - width: 500px; |
| 18 | + width: 450px; |
19 | 19 | float: right;
|
20 | 20 | }
|
21 | 21 | .ltconv {
|
|
304 | 304 | if(L.layer_type==='softmax' || L.layer_type==='fc') scale = 10; // for softmax
|
305 | 305 | draw_activations(activations_div, L.out_act, scale);
|
306 | 306 |
|
| 307 | + // visualize data gradients |
| 308 | + if(L.layer_type !== 'softmax') { |
| 309 | + var grad_div = document.createElement('div'); |
| 310 | + grad_div.appendChild(document.createTextNode('Data Gradients:')); |
| 311 | + grad_div.appendChild(document.createElement('br')); |
| 312 | + grad_div.className = 'layer_grad'; |
| 313 | + var scale = 2; |
| 314 | + if(L.layer_type==='softmax' || L.layer_type==='fc') scale = 10; // for softmax |
| 315 | + draw_activations(grad_div, L.out_act, scale, true); |
| 316 | + activations_div.appendChild(grad_div); |
| 317 | + } |
| 318 | + |
307 | 319 | // visualize filters if they are of reasonable size
|
308 | 320 | if(L.layer_type === 'conv') {
|
309 | 321 | var filters_div = document.createElement('div');
|
|
312 | 324 | filters_div.appendChild(document.createTextNode('Weights:'));
|
313 | 325 | filters_div.appendChild(document.createElement('br'));
|
314 | 326 | for(var j=0;j<L.filters.length;j++) {
|
| 327 | + filters_div.appendChild(document.createTextNode('(')); |
315 | 328 | draw_activations(filters_div, L.filters[j], 2);
|
| 329 | + filters_div.appendChild(document.createTextNode(')')); |
316 | 330 | }
|
317 | 331 | // gradients
|
318 | 332 | filters_div.appendChild(document.createElement('br'));
|
319 |
| - filters_div.appendChild(document.createTextNode('Gradients:')); |
| 333 | + filters_div.appendChild(document.createTextNode('Weight Gradients:')); |
320 | 334 | filters_div.appendChild(document.createElement('br'));
|
321 | 335 | for(var j=0;j<L.filters.length;j++) {
|
| 336 | + filters_div.appendChild(document.createTextNode('(')); |
322 | 337 | draw_activations(filters_div, L.filters[j], 2, true);
|
| 338 | + filters_div.appendChild(document.createTextNode(')')); |
323 | 339 | }
|
324 | 340 | } else {
|
325 | 341 | filters_div.appendChild(document.createTextNode('Weights hidden, too small'));
|
|
353 | 369 | layer_div.appendChild(document.createTextNode(t));
|
354 | 370 | layer_div.appendChild(document.createElement('br'));
|
355 | 371 |
|
| 372 | + var mma = maxmin(L.out_act.dw); |
| 373 | + var t = 'max gradient: ' + f2t(mma.maxv) + ', min: ' + f2t(mma.minv); |
| 374 | + layer_div.appendChild(document.createTextNode(t)); |
| 375 | + layer_div.appendChild(document.createElement('br')); |
| 376 | + |
356 | 377 | // number of parameters
|
357 | 378 | if(L.layer_type==='conv') {
|
358 | 379 | var tot_params = L.sx*L.sy*L.in_depth*L.filters.length + L.filters.length;
|
@@ -588,7 +609,7 @@ <h1>Description</h1>
|
588 | 609 | <h1>Training Stats</h1>
|
589 | 610 | <div class="divsec" style="270px;">
|
590 | 611 | <div class="secpart">
|
591 |
| - Current image: <img id="input_image" src=""></img><input id="buttontp" type="submit" value="pause" onclick="toggle_pause();"/> |
| 612 | + <input id="buttontp" type="submit" value="pause" onclick="toggle_pause();" style="width: 100px; height:30px; background-color: #FCC;"/> |
592 | 613 | <div id="trainstats"></div>
|
593 | 614 |
|
594 | 615 | <div id="controls">
|
|
0 commit comments