Skip to content

Instantly share code, notes, and snippets.

@ruemic
Last active February 13, 2016 11:33
Show Gist options
  • Select an option

  • Save ruemic/49b13d1394e417f9be3e to your computer and use it in GitHub Desktop.

Select an option

Save ruemic/49b13d1394e417f9be3e to your computer and use it in GitHub Desktop.

Revisions

  1. ruemic revised this gist Feb 13, 2016. 1 changed file with 7 additions and 3 deletions.
    10 changes: 7 additions & 3 deletions forwardjs-ml-math-lodash.js
    Original file line number Diff line number Diff line change
    @@ -8,20 +8,24 @@ const validateLengths = (a,b,action) => {
    }

    const arrayMultiply = (arr1, arr2) => {
    validateLengths(arr1,arr2,"mutliply")
    validateLengths(arr1, arr2, "multiply")
    return reduce(arr1, (accumulator, arrayItem, i) =>
    accumulator += arrayItem * arr2[i]
    , 0)
    }

    const arrayAdd = (arr1, arr2) => {
    validateLengths(arr1, arr2, "add")
    return map(arr1, (arrayItem,i) => arrayItem + arr2[i] )
    return map(arr1, (arrayItem, i) =>
    arrayItem + arr2[i]
    )
    }

    const arraySubtract = (arr1, arr2) => {
    validateLengths(arr1, arr2, "subtract")
    return map(arr1, (arrayItem,i) => arrayItem - arr2[i] )
    return map(arr1, (arrayItem, i) =>
    arrayItem - arr2[i]
    )
    }

    const sigmoid = (z) =>
  2. ruemic revised this gist Feb 13, 2016. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions forwardjs-ml-math-lodash.js
    Original file line number Diff line number Diff line change
    @@ -9,19 +9,19 @@ const validateLengths = (a,b,action) => {

    const arrayMultiply = (arr1, arr2) => {
    validateLengths(arr1,arr2,"mutliply")
    return arr1.reduce((accumulator, arrayItem, i) =>
    return reduce(arr1, (accumulator, arrayItem, i) =>
    accumulator += arrayItem * arr2[i]
    , 0)
    }

    const arrayAdd = (arr1, arr2) => {
    validateLengths(arr1, arr2, "add")
    return arr1.map((arrayItem,i) => arrayItem + arr2[i] )
    return map(arr1, (arrayItem,i) => arrayItem + arr2[i] )
    }

    const arraySubtract = (arr1, arr2) => {
    validateLengths(arr1, arr2, "subtract")
    return arr1.map((arrayItem,i) => arrayItem - arr2[i] )
    return map(arr1, (arrayItem,i) => arrayItem - arr2[i] )
    }

    const sigmoid = (z) =>
  3. ruemic created this gist Feb 13, 2016.
    41 changes: 41 additions & 0 deletions forwardjs-ml-math-lodash.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    const map = require('lodash/map')
    const reduce = require('lodash/reduce')

    const validateLengths = (a,b,action) => {
    if (a.length !== b.length) {
    throw Error(`Can\'t ${action} arrays of length ${a.length} and ${b.length}`);
    }
    }

    const arrayMultiply = (arr1, arr2) => {
    validateLengths(arr1,arr2,"mutliply")
    return arr1.reduce((accumulator, arrayItem, i) =>
    accumulator += arrayItem * arr2[i]
    , 0)
    }

    const arrayAdd = (arr1, arr2) => {
    validateLengths(arr1, arr2, "add")
    return arr1.map((arrayItem,i) => arrayItem + arr2[i] )
    }

    const arraySubtract = (arr1, arr2) => {
    validateLengths(arr1, arr2, "subtract")
    return arr1.map((arrayItem,i) => arrayItem - arr2[i] )
    }

    const sigmoid = (z) =>
    1 / (1 + Math.exp(z * -1))

    const sigmoidGradient = (z) =>
    sigmoid(z) * (1 - sigmoid(z))

    const sigmoidInverse = (a) =>
    Math.log(a) - Math.log(1 - a)

    exports.arrayMultiply = arrayMultiply;
    exports.arrayAdd = arrayAdd;
    exports.arraySubtract = arraySubtract;
    exports.sigmoid = sigmoid;
    exports.sigmoidGradient = sigmoidGradient;
    exports.sigmoidInverse = sigmoidInverse;