First Commit
This commit is contained in:
47
Vector.js
Normal file
47
Vector.js
Normal file
@@ -0,0 +1,47 @@
|
||||
function random() {
|
||||
let seed = 12345; // fixed seed
|
||||
|
||||
return function() {
|
||||
seed = ( seed * 16807 ) % 2147483647;
|
||||
return ( seed - 1 ) / 2147483646;
|
||||
};
|
||||
}
|
||||
|
||||
const randomFix = random();
|
||||
|
||||
export default class Vector {
|
||||
|
||||
constructor( length, fillValue = 0 ) {
|
||||
this.data = new Array( length );
|
||||
for ( let i = 0 ; i < length ; i++ ) {
|
||||
this.data[ i ] = fillValue;
|
||||
}
|
||||
}
|
||||
|
||||
get length() {
|
||||
return this.data.length;
|
||||
}
|
||||
|
||||
static dot( a, b ) {
|
||||
let sum = 0;
|
||||
for ( let i = 0 ; i < a.length ; i++ ) {
|
||||
sum += a.data[ i ] * b.data[ i ];
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static softmax( vec ) {
|
||||
const max = Math.max( ...vec.data );
|
||||
const exps = new Array( vec.length );
|
||||
let sum = 0;
|
||||
for ( let i = 0 ; i < vec.length ; i++ ) {
|
||||
exps[ i ] = Math.exp( vec.data[ i ] - max );
|
||||
sum += exps[ i ];
|
||||
}
|
||||
const result = new Vector( vec.length );
|
||||
for ( let i = 0 ; i < vec.length ; i++ ) {
|
||||
result.data[ i ] = exps[ i ] / sum;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user