UNPKG

clustering-tfjs

Version:

High-performance TypeScript clustering algorithms (K-Means, Spectral, Agglomerative) with TensorFlow.js acceleration and scikit-learn compatibility

335 lines (334 loc) 11.1 kB
/** * Browser-specific TensorFlow.js adapter * * This module is used when building for browser environments. * It expects users to have loaded @tensorflow/tfjs separately. */ // Function to get tf from global function getTf() { if (typeof window !== 'undefined' && window.tf) { return window.tf; } throw new Error('TensorFlow.js not found. Please load it before using this library.'); } // Re-export all tf functions, properly typed const tf = new Proxy({}, { get(_target, prop) { const tfInstance = getTf(); return tfInstance[prop]; } }); // Export commonly used functions for better tree-shaking export const tensor = (...args) => tf.tensor(...args); export const tensor1d = (...args) => tf.tensor1d(...args); export const tensor2d = (...args) => tf.tensor2d(...args); export const tensor3d = (...args) => tf.tensor3d(...args); export const tensor4d = (...args) => tf.tensor4d(...args); export const tensor5d = (...args) => tf.tensor5d(...args); export const tensor6d = (...args) => tf.tensor6d(...args); export const variable = (...args) => tf.variable(...args); export const scalar = (...args) => tf.scalar(...args); export const zeros = (...args) => tf.zeros(...args); export const ones = (...args) => tf.ones(...args); export const zerosLike = (...args) => tf.zerosLike(...args); export const onesLike = (...args) => tf.onesLike(...args); export const fill = (...args) => tf.fill(...args); export const range = (...args) => tf.range(...args); export const linspace = (...args) => tf.linspace(...args); // Math operations export const add = (...args) => tf.add(...args); export const sub = (...args) => tf.sub(...args); export const mul = (...args) => tf.mul(...args); export const div = (...args) => tf.div(...args); export const pow = (...args) => tf.pow(...args); export const sqrt = (...args) => tf.sqrt(...args); export const square = (...args) => tf.square(...args); export const abs = (...args) => tf.abs(...args); export const neg = (...args) => tf.neg(...args); export const sign = (...args) => tf.sign(...args); export const round = (...args) => tf.round(...args); export const floor = (...args) => tf.floor(...args); export const ceil = (...args) => tf.ceil(...args); export const sin = (...args) => tf.sin(...args); export const cos = (...args) => tf.cos(...args); export const tan = (...args) => tf.tan(...args); export const asin = (...args) => tf.asin(...args); export const acos = (...args) => tf.acos(...args); export const atan = (...args) => tf.atan(...args); export const sinh = (...args) => tf.sinh(...args); export const cosh = (...args) => tf.cosh(...args); export const tanh = (...args) => tf.tanh(...args); export const elu = (...args) => tf.elu(...args); export const relu = (...args) => tf.relu(...args); export const selu = (...args) => tf.selu(...args); export const leakyRelu = (...args) => tf.leakyRelu(...args); export const prelu = (...args) => tf.prelu(...args); export const softmax = (...args) => tf.softmax(...args); // Linear algebra export const matMul = (...args) => tf.matMul(...args); export const dot = (...args) => tf.dot(...args); export const outerProduct = (...args) => tf.outerProduct(...args); export const transpose = (...args) => tf.transpose(...args); export const norm = (...args) => tf.norm(...args); // Reduction export const mean = (...args) => tf.mean(...args); export const sum = (...args) => tf.sum(...args); export const min = (...args) => tf.min(...args); export const max = (...args) => tf.max(...args); export const prod = (...args) => tf.prod(...args); export const cumsum = (...args) => tf.cumsum(...args); export const all = (...args) => tf.all(...args); export const any = (...args) => tf.any(...args); export const argMax = (...args) => tf.argMax(...args); export const argMin = (...args) => tf.argMin(...args); // Manipulation export const slice = (...args) => tf.slice(...args); export const concat = (...args) => tf.concat(...args); export const stack = (...args) => tf.stack(...args); export const unstack = (...args) => tf.unstack(...args); export const split = (...args) => tf.split(...args); export const gather = (...args) => tf.gather(...args); export const reverse = (...args) => tf.reverse(...args); export const cast = (...args) => tf.cast(...args); export const reshape = (...args) => tf.reshape(...args); export const squeeze = (...args) => tf.squeeze(...args); export const expandDims = (...args) => tf.expandDims(...args); // Logical export const equal = (...args) => tf.equal(...args); export const greater = (...args) => tf.greater(...args); export const greaterEqual = (...args) => tf.greaterEqual(...args); export const less = (...args) => tf.less(...args); export const lessEqual = (...args) => tf.lessEqual(...args); export const logicalAnd = (...args) => tf.logicalAnd(...args); export const logicalOr = (...args) => tf.logicalOr(...args); export const logicalNot = (...args) => tf.logicalNot(...args); export const where = (...args) => tf.where(...args); // Special tensors export const eye = (...args) => tf.eye(...args); export const diag = (...args) => tf.diag(...args); export const unique = (...args) => tf.unique(...args); // Utility export const tidy = (...args) => tf.tidy(...args); export const dispose = (...args) => tf.dispose(...args); export const keep = (...args) => tf.keep(...args); export const memory = () => tf.memory(); export const backend = () => tf.backend(); export const env = () => tf.env(); export const ready = () => tf.ready(); export const setBackend = (...args) => tf.setBackend(...args); export const getBackend = () => tf.getBackend(); // Advanced export const grad = (...args) => tf.grad(...args); export const grads = (...args) => tf.grads(...args); export const customGrad = (...args) => tf.customGrad(...args); export const valueAndGrad = (...args) => tf.valueAndGrad(...args); export const valueAndGrads = (...args) => tf.valueAndGrads(...args); export const variableGrads = (...args) => tf.variableGrads(...args); // Scatter export const topk = (...args) => tf.topk(...args); export const scatterND = (...args) => tf.scatterND(...args); // Globals/Types - Access from runtime tf object export const Tensor = () => getTf().Tensor; // Namespaces - return functions to avoid immediate evaluation export const image = () => getTf().image; export const linalg = () => getTf().linalg; export const losses = () => getTf().losses; export const train = () => getTf().train; // data namespace is not in @tensorflow/tfjs-core, only in full tfjs // Return type is unknown since data namespace types aren't in core export const data = () => { const tfInstance = getTf(); if ('data' in tfInstance) { return tfInstance.data; } throw new Error('TensorFlow.js data API not available. Please load @tensorflow/tfjs instead of @tensorflow/tfjs-core'); }; export const browser = () => getTf().browser; export const util = () => getTf().util; export const io = () => getTf().io; // Additional functions that might be needed - export them export const sigmoid = (...args) => tf.sigmoid(...args); export const log = (...args) => tf.log(...args); export const exp = (...args) => tf.exp(...args); export const maximum = (...args) => tf.maximum(...args); export const minimum = (...args) => tf.minimum(...args); export const clone = (...args) => tf.clone(...args); export const print = (...args) => tf.print(...args); export const pad = (...args) => tf.pad(...args); export const notEqual = (...args) => tf.notEqual(...args); export const logicalXor = (...args) => tf.logicalXor(...args); export const batchNorm = (...args) => tf.batchNorm(...args); export const localResponseNormalization = (...args) => tf.localResponseNormalization(...args); export const separableConv2d = (...args) => tf.separableConv2d(...args); export const depthwiseConv2d = (...args) => tf.depthwiseConv2d(...args); export const conv1d = (...args) => tf.conv1d(...args); export const conv2d = (...args) => tf.conv2d(...args); export const conv2dTranspose = (...args) => tf.conv2dTranspose(...args); export const conv3d = (...args) => tf.conv3d(...args); export const conv3dTranspose = (...args) => tf.conv3dTranspose(...args); export const maxPool = (...args) => tf.maxPool(...args); export const avgPool = (...args) => tf.avgPool(...args); export const pool = (...args) => tf.pool(...args); export const maxPool3d = (...args) => tf.maxPool3d(...args); export const avgPool3d = (...args) => tf.avgPool3d(...args); export const complex = (...args) => tf.complex(...args); export const real = (...args) => tf.real(...args); export const imag = (...args) => tf.imag(...args); export const fft = (...args) => tf.fft(...args); export const ifft = (...args) => tf.ifft(...args); export const rfft = (...args) => tf.rfft(...args); export const irfft = (...args) => tf.irfft(...args); export const booleanMaskAsync = (...args) => tf.booleanMaskAsync(...args); export const randomNormal = (...args) => tf.randomNormal(...args); export const randomUniform = (...args) => tf.randomUniform(...args); export const multinomial = (...args) => tf.multinomial(...args); export const randomGamma = (...args) => tf.randomGamma(...args); // Default export as namespace export default { // Export all our typed functions tensor, tensor1d, tensor2d, tensor3d, tensor4d, tensor5d, tensor6d, variable, scalar, zeros, ones, zerosLike, onesLike, fill, range, linspace, add, sub, mul, div, pow, sqrt, square, abs, neg, sign, round, floor, ceil, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, elu, relu, selu, leakyRelu, prelu, softmax, matMul, dot, outerProduct, transpose, norm, mean, sum, min, max, prod, cumsum, all, any, argMax, argMin, slice, concat, stack, unstack, split, gather, reverse, cast, reshape, squeeze, expandDims, equal, greater, greaterEqual, less, lessEqual, logicalAnd, logicalOr, logicalNot, where, eye, diag, unique, tidy, dispose, keep, memory, backend, env, ready, setBackend, getBackend, grad, grads, customGrad, valueAndGrad, valueAndGrads, variableGrads, topk, scatterND, Tensor, image, linalg, losses, train, data, browser, util, io, // Additional sigmoid, log, exp, maximum, minimum, clone, print, pad, notEqual, logicalXor, batchNorm, localResponseNormalization, separableConv2d, depthwiseConv2d, conv1d, conv2d, conv2dTranspose, conv3d, conv3dTranspose, maxPool, avgPool, pool, maxPool3d, avgPool3d, complex, real, imag, fft, ifft, rfft, irfft, booleanMaskAsync, randomNormal, randomUniform, multinomial, randomGamma, };