Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion tfjs-backend-cpu/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,10 @@
"browser": {
"util": false,
"crypto": false
}
},
"sideEffects": [
"./dist/register_all_kernels.js",
"./dist/base.js",
"./dist/index.js"
]
}
7 changes: 6 additions & 1 deletion tfjs-backend-cpu/src/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,15 @@

/*
* base.ts contains all the exports from tfjs-backend-cpu
* that do not trigger side effects.
* without auto-kernel registration
*/
import {registerBackend} from '@tensorflow/tfjs-core';
import {MathBackendCPU} from './backend_cpu';
import * as shared from './shared';

export {MathBackendCPU} from './backend_cpu';
export {version as version_cpu} from './version';
export {shared};

// Side effects for default initialization of MathBackendCPU
registerBackend('cpu', () => new MathBackendCPU(), 1 /* priority */);
8 changes: 1 addition & 7 deletions tfjs-backend-cpu/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@
* =============================================================================
*/

import {registerBackend} from '@tensorflow/tfjs-core';
import {MathBackendCPU} from './base';

// Side effects for default initialization of MathBackendCPU
registerBackend('cpu', () => new MathBackendCPU(), 1 /* priority */);
import './register_all_kernels';

// All exports from this package should be in base.
export * from './base';
import './register_all_kernels';
8 changes: 7 additions & 1 deletion tfjs-backend-webgl/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,11 @@
"browser": {
"util": false,
"crypto": false
}
},
"sideEffects": [
"./dist/register_all_kernels.js",
"./dist/flags_webgl.js",
"./dist/base.js",
"./dist/index.js"
]
}
33 changes: 33 additions & 0 deletions tfjs-backend-webgl/src/base.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* @license
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =============================================================================
*/

// base.ts is the webgl backend without auto kernel registration.

import {device_util, registerBackend} from '@tensorflow/tfjs-core';
import {MathBackendWebGL} from './backend_webgl';
export {version as version_webgl} from './version';

if (device_util.isBrowser()) {
registerBackend('webgl', () => new MathBackendWebGL(), 2 /* priority */);
}

// Export webgl utilities
export * from './webgl';

// Export forceHalfFlost under webgl namespace for the union bundle.
import {forceHalfFloat} from './webgl';
export const webgl = {forceHalfFloat};
16 changes: 2 additions & 14 deletions tfjs-backend-webgl/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,6 @@
* =============================================================================
*/

import {device_util, registerBackend} from '@tensorflow/tfjs-core';
import {MathBackendWebGL} from './backend_webgl';
export {version as version_webgl} from './version';

if (device_util.isBrowser()) {
registerBackend('webgl', () => new MathBackendWebGL(), 2 /* priority */);
}
// All exports from this package should be in base.
export * from './base';
import './register_all_kernels';

// Export webgl utilities
export * from './webgl';

// Export forceHalfFlost under webgl namespace for the union bundle.
import {forceHalfFloat} from './webgl';
export const webgl = {forceHalfFloat};
2 changes: 1 addition & 1 deletion tfjs-backend-webgl/src/kernel_utils/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// Import shared functionality from tfjs-backend-cpu without triggering
// side effects.
// tslint:disable-next-line: no-imports-from-dist
import {shared} from '@tensorflow/tfjs-backend-cpu/dist/base';
import * as shared from '@tensorflow/tfjs-backend-cpu/dist/shared';

const {maxImpl: maxImplCPU, transposeImpl: transposeImplCPU} = shared;

Expand Down
12 changes: 11 additions & 1 deletion tfjs-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,5 +91,15 @@
"node-fetch": false,
"util": false,
"crypto": false
}
},
"sideEffects": [
"./dist/index.js",
"./dist/base_side_effects.js",
"./dist/engine.js",
"./dist/flags.js",
"./dist/platforms/*.js",
"./dist/register_all_gradients.js",
"./dist/public/chained_ops/*.js",
"./dist/io/*.js"
]
}
101 changes: 101 additions & 0 deletions tfjs-core/src/base.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/**
* @license
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =============================================================================
*/

// base.ts is tfjs-core without auto registration of gradients or chained ops.

/**
* @fileoverview
* @suppress {partialAlias} Optimization disabled due to passing the module
* object into a function below:
*
* import * as ops from './ops/ops';
* setOpHandler(ops);
*/

// Serialization.
import * as io from './io/io';
import * as math from './math';
import * as browser from './ops/browser';
import * as gather_util from './ops/gather_nd_util';
import * as scatter_util from './ops/scatter_nd_util';
import * as slice_util from './ops/slice_util';
import * as serialization from './serialization';
import {setOpHandler} from './tensor';
import * as tensor_util from './tensor_util';
import * as test_util from './test_util';
import * as util from './util';
import {version} from './version';

export {InferenceModel, MetaGraph, MetaGraphInfo, ModelPredictConfig, ModelTensorInfo, SavedModelTensorInfo, SignatureDef, SignatureDefInfo} from './model_types';
// Optimizers.
export {AdadeltaOptimizer} from './optimizers/adadelta_optimizer';
export {AdagradOptimizer} from './optimizers/adagrad_optimizer';
export {AdamOptimizer} from './optimizers/adam_optimizer';
export {AdamaxOptimizer} from './optimizers/adamax_optimizer';
export {MomentumOptimizer} from './optimizers/momentum_optimizer';
export {Optimizer} from './optimizers/optimizer';
export {RMSPropOptimizer} from './optimizers/rmsprop_optimizer';
export {SGDOptimizer} from './optimizers/sgd_optimizer';
export {Scalar, Tensor, Tensor1D, Tensor2D, Tensor3D, Tensor4D, Tensor5D, TensorBuffer, Variable} from './tensor';
export {GradSaveFunc, NamedTensorMap, TensorContainer, TensorContainerArray, TensorContainerObject} from './tensor_types';
export {BackendValues, DataType, DataTypeMap, DataValues, NumericDataType, PixelData, Rank, RecursiveArray, ScalarLike, ShapeMap, sumOutType, TensorLike, TypedArray, upcastType} from './types';

export * from './ops/ops';
export {Reduction} from './ops/loss_ops_utils';

export * from './train';
export * from './globals';
export * from './kernel_registry';
export {customGrad, grad, grads, valueAndGrad, valueAndGrads, variableGrads} from './gradients';

export {TimingInfo, MemoryInfo, ForwardFunc} from './engine';
export {Environment, env, ENV} from './environment';
export {Platform} from './platforms/platform';

export {version as version_core};

// Top-level method exports.
export {nextFrame} from './browser_util';

// Second level exports.
import * as backend_util from './backends/backend_util';
import * as device_util from './device_util';
export {
browser,
io,
math,
serialization,
test_util,
util,
backend_util,
tensor_util,
slice_util,
gather_util,
scatter_util,
device_util
};

import * as kernel_impls from './backends/kernel_impls';
export {kernel_impls};
// Backend specific.
export {KernelBackend, BackendTimingInfo, DataMover, DataStorage} from './backends/backend';

import * as ops from './ops/ops';
setOpHandler(ops);

// Export all kernel names / info.
export * from './kernel_names';
27 changes: 27 additions & 0 deletions tfjs-core/src/base_side_effects.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* @license
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =============================================================================
*/

// Required side effectful code for tfjs-core (in any build)

// Engine is the global singleton that needs to be initialized before the rest
// of the app.
import './engine';
// Register backend-agnostic flags.
import './flags';
// Register platforms
import './platforms/platform_browser';
import './platforms/platform_node';
94 changes: 4 additions & 90 deletions tfjs-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,98 +15,12 @@
* =============================================================================
*/

/**
* @fileoverview
* @suppress {partialAlias} Optimization disabled due to passing the module
* object into a function below:
*
* import * as ops from './ops/ops';
* setOpHandler(ops);
*/
// Required side effectful code.
import './base_side_effects';
// All exports from this package should be in base.
export * from './base';

// Engine is the global singleton that needs to be initialized before the rest
// of the app.
import './engine';
// Register backend-agnostic flags.
import './flags';
// Register all the gradients.
import './register_all_gradients';
import './platforms/platform_browser';
import './platforms/platform_node';

// Serialization.
import * as io from './io/io';
import * as math from './math';
import * as browser from './ops/browser';
import * as gather_util from './ops/gather_nd_util';
import * as scatter_util from './ops/scatter_nd_util';
import * as slice_util from './ops/slice_util';
import * as serialization from './serialization';
import {setOpHandler} from './tensor';
import * as tensor_util from './tensor_util';
import * as test_util from './test_util';
import * as util from './util';
import {version} from './version';

export {InferenceModel, MetaGraph, MetaGraphInfo, ModelPredictConfig, ModelTensorInfo, SavedModelTensorInfo, SignatureDef, SignatureDefInfo} from './model_types';
// Optimizers.
export {AdadeltaOptimizer} from './optimizers/adadelta_optimizer';
export {AdagradOptimizer} from './optimizers/adagrad_optimizer';
export {AdamOptimizer} from './optimizers/adam_optimizer';
export {AdamaxOptimizer} from './optimizers/adamax_optimizer';
export {MomentumOptimizer} from './optimizers/momentum_optimizer';
export {Optimizer} from './optimizers/optimizer';
export {RMSPropOptimizer} from './optimizers/rmsprop_optimizer';
export {SGDOptimizer} from './optimizers/sgd_optimizer';
export {Scalar, Tensor, Tensor1D, Tensor2D, Tensor3D, Tensor4D, Tensor5D, TensorBuffer, Variable} from './tensor';
export {GradSaveFunc, NamedTensorMap, TensorContainer, TensorContainerArray, TensorContainerObject} from './tensor_types';
export {BackendValues, DataType, DataTypeMap, DataValues, NumericDataType, PixelData, Rank, RecursiveArray, ScalarLike, ShapeMap, sumOutType, TensorLike, TypedArray, upcastType} from './types';

export * from './ops/ops';
export {Reduction} from './ops/loss_ops_utils';

export * from './train';
export * from './globals';
export * from './kernel_registry';
export {customGrad, grad, grads, valueAndGrad, valueAndGrads, variableGrads} from './gradients';

export {TimingInfo, MemoryInfo, ForwardFunc} from './engine';
export {Environment, env, ENV} from './environment';
export {Platform} from './platforms/platform';

export {version as version_core};

// Top-level method exports.
export {nextFrame} from './browser_util';

// Second level exports.
import * as backend_util from './backends/backend_util';
import * as device_util from './device_util';
export {
browser,
io,
math,
serialization,
test_util,
util,
backend_util,
tensor_util,
slice_util,
gather_util,
scatter_util,
device_util
};

import * as kernel_impls from './backends/kernel_impls';
export {kernel_impls};
// Backend specific.
export {KernelBackend, BackendTimingInfo, DataMover, DataStorage} from './backends/backend';

import * as ops from './ops/ops';
setOpHandler(ops);

// Export all kernel names / info.
export * from './kernel_names';

// Import all op chainers and add type info to Tensor.
import './public/chained_ops/register_all_chained_ops';
Loading