Skip to content
Snippets Groups Projects
Commit 65f2b3f8 authored by Thrasyvoulos Karydis's avatar Thrasyvoulos Karydis
Browse files

first pass on ML bottom up

parent db10525d
Branches
No related tags found
No related merge requests found
......@@ -10,10 +10,19 @@
</script>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.git</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.gitignore'>.gitignore</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.idea</i><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inspectionProfiles</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/inspectionProfiles/Project_Default.xml'>Project_Default.xml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/jsLibraryMappings.xml'>jsLibraryMappings.xml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/mods.iml'>mods.iml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/modules.xml'>modules.xml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/vcs.xml'>vcs.xml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./.idea/workspace.xml'>workspace.xml</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./README.md'>README.md</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./files.html'>files.html</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./index.html'>index.html</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/convnet-min.js'>convnet-min.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/deviceserver.js'>deviceserver.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/echoserver.js'>echoserver.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/files.js'>files.js</a><br>
......@@ -85,6 +94,9 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/math/scalar'>scalar</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mesh</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/mesh/slice'>slice</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ml</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/ml/fully-connected'>fully-connected</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/ml/nonlinearity'>nonlinearity</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/object/download'>download</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/object/set'>set</a><br>
......
......@@ -67,6 +67,9 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/math/scalar')">scalar</a><br>
<i>mesh</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/mesh/slice')">slice</a><br>
<i>ml</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/ml/fully-connected')">fully-connected</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/ml/nonlinearity')">nonlinearity</a><br>
<i>object</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/object/download')">download</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:handler('modules/object/set')">set</a><br>
......
//
// ML: Fully-Connected module
//
// Thras Karydis
// (c) Massachusetts Institute of Technology 2018
//
// This work may be reproduced, modified, distributed, performed, and
// displayed for any purpose, but must acknowledge the mods
// project. Copyright is retained and must be preserved. The work is
// provided as is; no warranty is provided, and users accept all
// liability.
//
// closure
//
(function(){
//
// module globals
//
var mod = {w: []}
//
// name
//
var name = 'Fully-Connected'
//
// initialization
//
var init = function() {
mod.x = [0.1, 0.7]
mod.w = [0.5, 0.5]
mod.xtext.value = mod.x
mod.wtext.value = mod.w
outputs.y.event()
}
//
// inputs
//
var inputs = {
x:{type:'vector1d',
event:function(evt){
mod.x = evt.detail
mod.xtext.value = mod.x
outputs.y.event()}}}
//
// outputs
//
var outputs = {
y:{type:'number',
event:function(){
var x = mod.x
var w = mod.w
var y = linearSum(x, w)
mod.ytext.value = y
mods.output(mod,'y',y)}}}
//
// interface
//
var interface = function(div){
mod.div = div
div.appendChild(document.createTextNode('x: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 6
input.addEventListener('input',function(evt){
mod.x = parseFloat(mod.xtext.value)
outputs.y.event()
})
div.appendChild(input)
mod.xtext = input
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('w: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 6
input.addEventListener('input',function(evt){
mod.w = parseFloat(mod.wtext.value)
outputs.y.event()
})
div.appendChild(input)
mod.wtext = input
div.appendChild(document.createTextNode('y: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 6
div.appendChild(input)
mod.ytext = input
}
//
// local functions
//
function linearSum(arr1, arr2) {
var sum = 0;
for (var i = 0; i < arr1.length; i++) {
sum += arr1[i] * arr2[i];
}
return sum
}
//
// return values
//
return ({
name:name,
init:init,
inputs:inputs,
outputs:outputs,
interface:interface
})
}())
//
// ML: Nonlinearity module
//
// Thras Karydis
// (c) Massachusetts Institute of Technology 2018
//
// This work may be reproduced, modified, distributed, performed, and
// displayed for any purpose, but must acknowledge the mods
// project. Copyright is retained and must be preserved. The work is
// provided as is; no warranty is provided, and users accept all
// liability.
//
// closure
//
(function(){
//
// module globals
//
var mod = {functions:{
tanh: tanh,
relu: relu
}}
//
// name
//
var name = 'Nonlinearity'
//
// initialization
//
var init = function() {
mod.x = 123
mod.xtext.value = mod.x
expression = '3*x+0.5'
mod.etext.value = expression
outputs.y.event()
}
//
// inputs
//
var inputs = {
x:{type:'number',
event:function(evt){
mod.x = evt.detail
mod.xtext.value = mod.x
outputs.y.event()}}}
//
// outputs
//
var outputs = {
y:{type:'number',
event:function(){
var x = mod.x
var y = tanh(x) //TODO:change
mod.ytext.value = y
mods.output(mod,'y',y)}}}
//
// interface
//
var interface = function(div){
mod.div = div
div.appendChild(document.createTextNode('x: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 6
input.addEventListener('input',function(evt){
mod.x = parseFloat(mod.xtext.value)
outputs.y.event()
})
div.appendChild(input)
mod.xtext = input
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('expression: '))
var input = document.createElement('SELECT')
input.addEventListener('input',function(evt){
outputs.y.event()
})
input.setAttribute("id", "func-select");
//select menu for functions
for (var property in mod.functions) {
console.log(property)
var z = document.createElement("option");
z.setAttribute("value", property);
var t = document.createTextNode(property);
z.appendChild(t);
input.appendChild(z);
}
div.appendChild(input)
mod.func = input
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('y: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 6
div.appendChild(input)
mod.ytext = input
}
//
// local functions
//
function tanh(x) {
var y = Math.exp(2 * x);
return (y - 1) / (y + 1);
}
function relu(x){
return Math.max(0, x);
}
//
// return values
//
return ({
name:name,
init:init,
inputs:inputs,
outputs:outputs,
interface:interface
})
}())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment