From a413ca68dd7b23082f965aea125b536a593f0f40 Mon Sep 17 00:00:00 2001 From: Daniel Smilkov Date: Wed, 28 Mar 2018 11:03:32 -0400 Subject: [PATCH] Remove demos/homepage (#905) --- demos/homepage/Gemfile | 26 -- demos/homepage/Gemfile.lock | 205 -------------- demos/homepage/_config.yml | 33 --- demos/homepage/_includes/footer.html | 32 --- demos/homepage/_includes/header.html | 39 --- demos/homepage/_layouts/default.html | 50 ---- demos/homepage/_layouts/page.html | 24 -- demos/homepage/assets/style.css | 325 ----------------------- demos/homepage/assets/support.js | 68 ----- demos/homepage/homepage.ts | 140 ---------- demos/homepage/index.md | 306 --------------------- demos/homepage/preview.png | Bin 212504 -> 0 bytes package.json | 6 +- scripts/build-npm.sh | 6 +- src/browser_util.ts | 2 +- src/environment.ts | 4 +- src/gradients.ts | 44 +-- src/ops/array_ops.ts | 115 ++++---- src/ops/binary_ops.ts | 88 +++--- src/ops/concat.ts | 18 +- src/ops/matmul.ts | 12 +- src/ops/norm.ts | 4 +- src/ops/reduction_ops.ts | 56 ++-- src/ops/reverse.ts | 4 +- src/ops/slice.ts | 12 +- src/ops/softmax.ts | 8 +- src/ops/transpose.ts | 4 +- src/ops/unary_ops.ts | 106 ++++---- src/optimizers/optimizer_constructors.ts | 12 +- src/tensor.ts | 4 +- src/tracking.ts | 32 +-- 31 files changed, 268 insertions(+), 1517 deletions(-) delete mode 100644 demos/homepage/Gemfile delete mode 100644 demos/homepage/Gemfile.lock delete mode 100644 demos/homepage/_config.yml delete mode 100644 demos/homepage/_includes/footer.html delete mode 100644 demos/homepage/_includes/header.html delete mode 100644 demos/homepage/_layouts/default.html delete mode 100644 demos/homepage/_layouts/page.html delete mode 100644 demos/homepage/assets/style.css delete mode 100644 demos/homepage/assets/support.js delete mode 100644 demos/homepage/homepage.ts delete mode 100644 demos/homepage/index.md delete mode 100644 demos/homepage/preview.png diff --git a/demos/homepage/Gemfile b/demos/homepage/Gemfile deleted file mode 100644 index 8b53357a7e..0000000000 --- a/demos/homepage/Gemfile +++ /dev/null @@ -1,26 +0,0 @@ -source "https://rubygems.org" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# -# This will help ensure the proper Jekyll version is running. -# Happy Jekylling! - -# This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.0" - -# If you want to use GitHub Pages, remove the "gem "jekyll"" above and -# uncomment the line below. To upgrade, run `bundle update github-pages`. -gem "github-pages", group: :jekyll_plugins - -# If you have any plugins, put them here! -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" -end - -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem -#gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] - diff --git a/demos/homepage/Gemfile.lock b/demos/homepage/Gemfile.lock deleted file mode 100644 index 147c3924b8..0000000000 --- a/demos/homepage/Gemfile.lock +++ /dev/null @@ -1,205 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (4.2.8) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - colorator (1.1.0) - ethon (0.10.1) - ffi (>= 1.3.0) - execjs (2.7.0) - faraday (0.12.2) - multipart-post (>= 1.2, < 3) - ffi (1.9.18) - forwardable-extended (2.6.0) - gemoji (3.0.0) - github-pages (146) - activesupport (= 4.2.8) - github-pages-health-check (= 1.3.5) - jekyll (= 3.4.5) - jekyll-avatar (= 0.4.2) - jekyll-coffeescript (= 1.0.1) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.9.2) - jekyll-gist (= 1.4.0) - jekyll-github-metadata (= 2.5.1) - jekyll-mentions (= 1.2.0) - jekyll-optional-front-matter (= 0.2.0) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.1.0) - jekyll-redirect-from (= 0.12.1) - jekyll-relative-links (= 0.4.1) - jekyll-sass-converter (= 1.5.0) - jekyll-seo-tag (= 2.2.3) - jekyll-sitemap (= 1.0.0) - jekyll-swiss (= 0.4.0) - jekyll-theme-architect (= 0.0.4) - jekyll-theme-cayman (= 0.0.4) - jekyll-theme-dinky (= 0.0.4) - jekyll-theme-hacker (= 0.0.4) - jekyll-theme-leap-day (= 0.0.4) - jekyll-theme-merlot (= 0.0.4) - jekyll-theme-midnight (= 0.0.4) - jekyll-theme-minimal (= 0.0.4) - jekyll-theme-modernist (= 0.0.4) - jekyll-theme-primer (= 0.3.1) - jekyll-theme-slate (= 0.0.4) - jekyll-theme-tactile (= 0.0.4) - jekyll-theme-time-machine (= 0.0.4) - jekyll-titles-from-headings (= 0.2.0) - jemoji (= 0.8.0) - kramdown (= 1.13.2) - liquid (= 3.0.6) - listen (= 3.0.6) - mercenary (~> 0.3) - minima (= 2.1.1) - rouge (= 1.11.1) - terminal-table (~> 1.4) - github-pages-health-check (1.3.5) - addressable (~> 2.3) - net-dns (~> 0.8) - octokit (~> 4.0) - public_suffix (~> 2.0) - typhoeus (~> 0.7) - html-pipeline (2.6.0) - activesupport (>= 2) - nokogiri (>= 1.4) - i18n (0.8.6) - jekyll (3.4.5) - addressable (~> 2.4) - colorator (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (~> 1.7) - safe_yaml (~> 1.0) - jekyll-avatar (0.4.2) - jekyll (~> 3.0) - jekyll-coffeescript (1.0.1) - coffee-script (~> 2.2) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.9.2) - jekyll (~> 3.3) - jekyll-gist (1.4.0) - octokit (~> 4.2) - jekyll-github-metadata (2.5.1) - jekyll (~> 3.1) - octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.2.0) - activesupport (~> 4.0) - html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.2.0) - jekyll (~> 3.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.1.0) - jekyll (~> 3.0) - jekyll-redirect-from (0.12.1) - jekyll (~> 3.3) - jekyll-relative-links (0.4.1) - jekyll (~> 3.3) - jekyll-sass-converter (1.5.0) - sass (~> 3.4) - jekyll-seo-tag (2.2.3) - jekyll (~> 3.3) - jekyll-sitemap (1.0.0) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) - jekyll-theme-architect (0.0.4) - jekyll (~> 3.3) - jekyll-theme-cayman (0.0.4) - jekyll (~> 3.3) - jekyll-theme-dinky (0.0.4) - jekyll (~> 3.3) - jekyll-theme-hacker (0.0.4) - jekyll (~> 3.3) - jekyll-theme-leap-day (0.0.4) - jekyll (~> 3.3) - jekyll-theme-merlot (0.0.4) - jekyll (~> 3.3) - jekyll-theme-midnight (0.0.4) - jekyll (~> 3.3) - jekyll-theme-minimal (0.0.4) - jekyll (~> 3.3) - jekyll-theme-modernist (0.0.4) - jekyll (~> 3.3) - jekyll-theme-primer (0.3.1) - jekyll (~> 3.3) - jekyll-theme-slate (0.0.4) - jekyll (~> 3.3) - jekyll-theme-tactile (0.0.4) - jekyll (~> 3.3) - jekyll-theme-time-machine (0.0.4) - jekyll (~> 3.3) - jekyll-titles-from-headings (0.2.0) - jekyll (~> 3.3) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - jemoji (0.8.0) - activesupport (~> 4.0) - gemoji (~> 3.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0) - kramdown (1.13.2) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) - mercenary (0.3.6) - mini_portile2 (2.2.0) - minima (2.1.1) - jekyll (~> 3.3) - minitest (5.10.3) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.8.0) - mini_portile2 (~> 2.2.0) - octokit (4.7.0) - sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.14.0) - forwardable-extended (~> 2.6) - public_suffix (2.0.5) - rb-fsevent (0.10.2) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rouge (1.11.1) - safe_yaml (1.0.4) - sass (3.5.1) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.3) - thread_safe (~> 0.1) - unicode-display_width (1.3.0) - -PLATFORMS - ruby - -DEPENDENCIES - github-pages - jekyll-feed (~> 0.6) - minima (~> 2.0) - -BUNDLED WITH - 1.15.3 diff --git a/demos/homepage/_config.yml b/demos/homepage/_config.yml deleted file mode 100644 index cb0c8718ed..0000000000 --- a/demos/homepage/_config.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole blog, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'bundle exec jekyll serve'. If you change this file, please restart the server process. - -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. -title: deeplearn.js -baseurl: "" # the subpath of your site, e.g. /blog - -# Build settings -markdown: kramdown -theme: minima -gems: - - jekyll-feed - - jekyll-redirect-from -exclude: - - Gemfile - - Gemfile.lock - - node_modules/ - - demos/node_modules/ - - demos/bower_components/ - -# deployment -host: 0.0.0.0 diff --git a/demos/homepage/_includes/footer.html b/demos/homepage/_includes/footer.html deleted file mode 100644 index eca84845e6..0000000000 --- a/demos/homepage/_includes/footer.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - diff --git a/demos/homepage/_includes/header.html b/demos/homepage/_includes/header.html deleted file mode 100644 index 852ea76eb2..0000000000 --- a/demos/homepage/_includes/header.html +++ /dev/null @@ -1,39 +0,0 @@ - -
- - -
- -
- deeplearn.js - -
diff --git a/demos/homepage/_layouts/default.html b/demos/homepage/_layouts/default.html deleted file mode 100644 index 895f99b077..0000000000 --- a/demos/homepage/_layouts/default.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - deeplearn.js - - - - - - - - - - - - - - - - - - - - - - -
- {% include header.html %} -
- {{ content }} - {% include footer.html %} -
-
- - diff --git a/demos/homepage/_layouts/page.html b/demos/homepage/_layouts/page.html deleted file mode 100644 index 8f69ea1b80..0000000000 --- a/demos/homepage/_layouts/page.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default ---- -
-
-
-
- {{ content }} -
-
-
-
- {% assign pages_list = site.pages | sort: 'order' %} - -
-
diff --git a/demos/homepage/assets/style.css b/demos/homepage/assets/style.css deleted file mode 100644 index 20200fc79f..0000000000 --- a/demos/homepage/assets/style.css +++ /dev/null @@ -1,325 +0,0 @@ -html { - width: 100%; - height: 100%; -} -body { - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - margin: 0; - width: 100%; - height: 100%; -} -head { - height: 0; - width: 0; -} -/* Typography */ -p { - font-family: 'Roboto', sans-serif; - line-height: 1.67em; - font-size: 16px; -} -.mdl-list__item a { - text-decoration: none; - color: rgba(0,0,0,0.64); - font-weight: 400; - letter-spacing: 0; -} -.mdl-list__item a:hover { - text-decoration: underline; - color: rgba(0,0,0,0.64); - font-weight: 400; - letter-spacing: 0; -} -.mdl-navigation__link{ - font-family: 'Roboto', sans-serif; -} -.mdl-layout__drawer { - font-family: 'Roboto', sans-serif; -} - -/* CPPN Demo */ -.banner { - background-size: cover; - background-position: center; - min-height: 250px; - padding-top: 64px; - padding-bottom: 32px; - position: relative; -} -.banner-cover { - position: relative; - background: -webkit-linear-gradient(#eeede2, #a3d5bc, #6ab8b5, #42737f); - background: -moz-linear-gradient(#eeede2, #a3d5bc, #6ab8b5, #42737f); - background: linear-gradient(#eeede2, #a3d5bc, #6ab8b5, #42737f); -} -.banner-text { - color:#fff; -} -.cppn-controls { - min-width: 300px; - max-width: 300px; - padding:24px 24px 60px 24px; - background-color: rgba(255,255,255,0.99); - position: relative; -} -.cppn-demo { - color:#fff; -} -#disabled-demo-overlay { - position: absolute; - width: 100%; - height: 100%; - background-color: rgba(62, 82, 90, .9); - top: 0; - left: 0; -} -#disabled-demo { - margin: auto; - position: absolute; - top: 20%; - left: 0; - right: 0; - padding: 32px; - bottom: 0; - font-size: 18px; - color: white; - font-weight: 400; - text-align: left; - line-height: 1.3325em; - z-index: 2; -} -#inference { - width: 100%; - height: calc(100% + 1px); - position: absolute; -} -.getmdl-select .mdl-icon-toggle__label{ - float:right; - margin-top:-30px; - color:rgba(0,0,0,0.4); -} -/* Introduction */ -.intro-text { - margin: 32px auto 32px auto; -} -.mdl-grid { - max-width: 1200px; -} -.mdl-mini-footer { - margin-top: 72px; -} -.mdl-card__actions { - padding-left: 12px; -} -.intro-headline { - line-height: 1.67em; - font-weight: 300; - color: #888; -} -/* Responsive behavior */ -.intro-text > .mdl-cell--8-col-tablet { - margin-top: 72px; -} -.banner >.mdl-cell--8-col-tablet { - margin: 36px; -} -.resource-tabs { - font-family: 'Roboto', sans-serif; -} - -a { - color: #346f91; - font-size: 16px; -} -a:visited { - color: #346f91; -} -a:hover { - color: #346f91; -} -.mdl-card__actions a:hover { - text-decoration: none; -} - -a.main-title { - color: white; - text-decoration: none; -} - -blockquote { - color: black; - padding: 8px 8px 8px 20px; - border-left-width: 2px; - font-style: normal; - border-left-style: solid; - border-color: #9e9e9e; - background-color: #eee; - margin-bottom: 32px; -} -blockquote:before { - content: none; -} -blockquote:after { - content: none; -} -ul { - margin-left: 16px; - list-style-type: disc; -} -ul ul { - list-style-type: disc; -} -ul ul ul { - list-style-type: disc; -} -ul ul ul ul { - list-style-type: disc; -} -.highlight .err { - color: inherit; - background-color: inherit; -} -table { - border-spacing: 20px; -} -.site-nav { - position: fixed; - float: inherit; -} -.site-nav ul { - margin-top: 32px; - border-left: solid 3px #C0EbF1; - padding-left: 20px; - line-height: 28px; - list-style-type: none; - line-height: 1.3em; - font-weight: normal; -} -.site-nav ul li { - padding-bottom: 20px; -} -.site-nav ul a { - color: #50797f; - font-weight: normal; -} -ul.index { - border-left: 2px solid #346f91; - margin-left: 16px; - margin-top: 16px; - padding-left: 16px; - list-style-type: none; -} -.deeplearn-shine { - color: #777; - font-weight: 500; -} - -.featured-demo div.mdl-card__title { - height: 352px; - color: white; - z-index: 1; - padding: 5px 12px; - font-weight: 400; - font-size: 48px; -} - -.featured-demo h1.mdl-card__title-text { - font-size: 36px; - margin: 0 0 2px 2px; - padding: 5px 12px; -} - -.featured-demo div.mdl-card__title:before { - background: none; -} - -.demo-card .mdl-card__title { - color: #fff; - height: 176px; -} - -.demo-card .mdl-card__title:before { - content: ''; - height: 176px; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(41, 73, 77, 0.73); -} - -div.mdl-card__title h1.mdl-card__title-text { - font-weight: 200; - font-size: 0.6em; - letter-spacing: 0.5px; - background-color: rgba(0, 0, 0, .54); -} - -#teachable-machine { - background: url('../demos/images/teachablemachine_preview.jpg') center / cover; -} - -#perf-rnn { - background: url('../demos/images/performance_rnn_preview.jpg') center / cover; -} - -#model-builder { - background: url('../demos/images/model-builder.png') center / cover; -} - -#webcam { - background: url('../demos/images/imagenet.png') center / cover; -} - -#nnart { - background: url('../demos/images/nn-art.png') center / cover; -} - -#benchmarks { - background: url('../demos/images/benchmark.png') center / cover; -} - -#playground { - background: url('../demos/images/playground_preview.png') center / cover; -} - -.demo-card .mdl-card__title-text { - color: white; - z-index: 1; - font-weight: 400; -} - -.mdl-typography--display-2, h1, h2, h3, h4 { - color: #414141; - font-weight: 300; -} -code { - background: none; -} -.highlighter-rouge .highlight { - background-color: #f5f5f5; - padding-bottom: 16px; - margin-bottom: 32px; -} - -h2 { - font-size: 40px; -} - -h3 { - font-size: 30px; -} -p.intro-body { - font-weight: 300; -} -.mdl-mini-footer__link-list a { - color: rgb(158, 158, 158); -} -.mdl-mini-footer__link-list a:visited { - color: rgb(158, 158, 158); -} - -#travis-badge { - display: none; -} diff --git a/demos/homepage/assets/support.js b/demos/homepage/assets/support.js deleted file mode 100644 index 77b9334efb..0000000000 --- a/demos/homepage/assets/support.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * Copyright 2017 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. - * ============================================================================= - */ -function isWebGLEnabled() { - var canvas = document.createElement('canvas'); - - var attributes = { - alpha: false, - antialias: false, - premultipliedAlpha: false, - preserveDrawingBuffer: false, - depth: false, - stencil: false, - failIfMajorPerformanceCaveat: true - }; - return null != (canvas.getContext('webgl', attributes) || - canvas.getContext('experimental-webgl', attributes)); -} - -function buildAndShowDialog(title, content) { - var dialogContainer = document.createElement('div'); - dialogContainer.innerHTML = ` - -

${title}

-
-

${content}

-
-
- `; - document.body.appendChild(dialogContainer); - var dialog = document.getElementById('dialog'); - dialog.style.width = '430px'; - dialogPolyfill.registerDialog(dialog); - dialog.showModal(); -} - -function inializePolymerPage() { - document.addEventListener('WebComponentsReady', function(event) { - if (!isWebGLEnabled()) { - const title = `Check if hardware acceleration is enabled.`; - const content = ` - Looks like your device is supported but settings aren't in place. - Please check if WebGL is enabled for your browser. - - See: How can I enable WebGL in my browser? - `; - buildAndShowDialog(title, content); - } else { - var bundleScript = document.createElement('script'); - bundleScript.src = 'bundle.js'; - document.head.appendChild(bundleScript); - } - }); -} -inializePolymerPage(); diff --git a/demos/homepage/homepage.ts b/demos/homepage/homepage.ts deleted file mode 100644 index 60971f821d..0000000000 --- a/demos/homepage/homepage.ts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * @license - * Copyright 2017 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. - * ============================================================================= - */ - -import {ENV} from 'deeplearn'; -import {ActivationFunction, CPPN} from '../nn-art/cppn'; - -const inferenceCanvas = - document.querySelector('#inference') as HTMLCanvasElement; - -if (ENV.get('WEBGL_VERSION') >= 1) { - startCPPN(); -} else { - document.getElementById('disabled-demo-overlay').style.display = ''; - inferenceCanvas.style.display = 'none'; -} - -function startCPPN() { - const DEFAULT_Z_SCALE = 1; - const NUM_NEURONS = 30; - const DEFAULT_NUM_LAYERS = 2; - const WEIGHTS_STDEV = 0.6; - - const cppn = new CPPN(inferenceCanvas); - - cppn.setActivationFunction('tanh'); - cppn.setNumLayers(DEFAULT_NUM_LAYERS); - cppn.setZ1Scale(convertZScale(DEFAULT_Z_SCALE)); - cppn.setZ2Scale(convertZScale(DEFAULT_Z_SCALE)); - cppn.generateWeights(NUM_NEURONS, WEIGHTS_STDEV); - cppn.start(); - - const currentActivationFnElement = - document.querySelector('#activation-fn') as HTMLInputElement; - document.querySelector('#activation-selector') - .addEventListener( - // tslint:disable-next-line:no-any - 'click', (event: any) => { - const activationFn = - (event.target as HTMLElement).getAttribute('data-val') as - ActivationFunction; - currentActivationFnElement.value = activationFn; - cppn.setActivationFunction(activationFn); - }); - - const layersSlider = - document.querySelector('#layers-slider') as HTMLInputElement; - const layersCountElement = - document.querySelector('#layers-count') as HTMLDivElement; - layersSlider.addEventListener('input', (event) => { - // tslint:disable-next-line:no-any - const numLayers = parseInt((event as any).target.value, 10); - layersCountElement.innerText = numLayers.toString(); - cppn.setNumLayers(numLayers); - }); - layersCountElement.innerText = DEFAULT_NUM_LAYERS.toString(); - - const z1Slider = document.querySelector('#z1-slider') as HTMLInputElement; - z1Slider.addEventListener('input', (event) => { - // tslint:disable-next-line:no-any - const z1Scale = parseInt((event as any).target.value, 10); - cppn.setZ1Scale(convertZScale(z1Scale)); - }); - - const z2Slider = document.querySelector('#z2-slider') as HTMLInputElement; - z2Slider.addEventListener('input', (event) => { - // tslint:disable-next-line:no-any - const z2Scale = parseInt((event as any).target.value, 10); - cppn.setZ2Scale(convertZScale(z2Scale)); - }); - - const randomizeButton = - document.querySelector('#random') as HTMLButtonElement; - randomizeButton.addEventListener('click', () => { - cppn.generateWeights(NUM_NEURONS, WEIGHTS_STDEV); - if (!playing) { - cppn.start(); - requestAnimationFrame(() => { - cppn.stopInferenceLoop(); - }); - } - }); - - let playing = true; - const toggleButton = document.querySelector('#toggle') as HTMLButtonElement; - toggleButton.addEventListener('click', () => { - playing = !playing; - if (playing) { - toggleButton.innerHTML = 'STOP'; - cppn.start(); - } else { - toggleButton.innerHTML = 'START'; - cppn.stopInferenceLoop(); - } - }); - - let canvasOnScreenLast = true; - let scrollEventScheduled = false; - const mainElement = document.querySelector('main') as HTMLElement; - mainElement.addEventListener('scroll', () => { - if (!scrollEventScheduled) { - window.requestAnimationFrame(() => { - const canvasOnScreen = isCanvasOnScreen(); - if (canvasOnScreen !== canvasOnScreenLast) { - if (canvasOnScreen) { - if (playing) { - cppn.start(); - } - } else { - cppn.stopInferenceLoop(); - } - canvasOnScreenLast = canvasOnScreen; - } - scrollEventScheduled = false; - }); - } - scrollEventScheduled = true; - }); - - function isCanvasOnScreen() { - return mainElement.scrollTop < inferenceCanvas.offsetHeight; - } - - function convertZScale(z: number): number { - return (103 - z); - } -} diff --git a/demos/homepage/index.md b/demos/homepage/index.md deleted file mode 100644 index e78b532d85..0000000000 --- a/demos/homepage/index.md +++ /dev/null @@ -1,306 +0,0 @@ ---- -layout: default ---- - - - - -
-
-
-

deeplearn.js is an open-source library that brings performant machine learning building blocks to the web, allowing you to train neural networks in a browser or run pre-trained models in inference mode.

-
-
-
-

We provide an API that closely mirrors - the TensorFlow eager API.

deeplearn.js - was originally developed by the Google Brain PAIR team to build powerful - interactive machine learning tools for the browser. You can use the library - for everything from education, to model understanding, to art projects.

-
-
-
- -
-
-
-

Examples

-
-
- - - - - - -
- - -
-
-
- {% capture my_include %}{% include README.md %}{% endcapture %} - {{ my_include | markdownify }} -
-
-
- -
-
-
-

Acknowledgements

-
-
-
- -
-
-
-

- deeplearn.js was originally developed by - , , and - Charles Nicholson. -

- -
-
-
-

- We would like to acknowledge Chi Zeng, David Farhi, Mahima Pushkarna, - Lauren Hannah-Murphy, Minsuk (Brian) Kahng, James Wexler, Martin Wattenberg, - Fernanda ViƩgas, Greg Corrado, Jeff Dean for their tremendous help, and the - Google Brain team for providing support for the project. -

-
-
-
- diff --git a/demos/homepage/preview.png b/demos/homepage/preview.png deleted file mode 100644 index 6c8d5610b1a2829fbf09fa8ee7de3df897007957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212504 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 boEw5|aXC}l dist/deeplearn.js -uglifyjs dist/deeplearn.js -c -m -o dist/deeplearn.min.js -echo "Stored standalone library at dist/deeplearn(.min).js" +browserify --standalone tfc src/index.ts -p [tsify] > dist/tf-core.js +uglifyjs dist/tf-core.js -c -m -o dist/tf-core.min.js +echo "Stored standalone library at dist/tf-core(.min).js" npm pack diff --git a/src/browser_util.ts b/src/browser_util.ts index b84058cbbc..26e5c9fbc3 100644 --- a/src/browser_util.ts +++ b/src/browser_util.ts @@ -21,7 +21,7 @@ export class BrowserUtil { * Returns a promise that resolve when a requestAnimationFrame has completed. * * This is simply a sugar method so that users can do the following: - * `await dl.nextFrame();` + * `await tf.nextFrame();` */ @doc({heading: 'Performance', subheading: 'Timing'}) static nextFrame(): Promise { diff --git a/src/environment.ts b/src/environment.ts index e6301624d5..b96c53b774 100644 --- a/src/environment.ts +++ b/src/environment.ts @@ -222,7 +222,7 @@ export class Environment { * * @param backendType The backend type. Currently supports `'webgl'|'cpu'`. * @param safeMode Defaults to false. In safe mode, you are forced to - * construct tensors and call math operations inside a `dl.tidy()` which + * construct tensors and call math operations inside a `tidy()` which * will automatically clean up intermediate tensors. */ @doc({heading: 'Environment'}) @@ -256,7 +256,7 @@ export class Environment { * - `unreliable`: `Optional` `boolean`: * - On WebGL, not present (always reliable). * - On CPU, true. Due to automatic garbage collection, these numbers - * represent undisposed tensors, i.e. not wrapped in `dl.tidy()`, or + * represent undisposed tensors, i.e. not wrapped in `tidy()`, or * lacking a call to `tensor.dispose()`. */ @doc({heading: 'Performance', subheading: 'Memory'}) diff --git a/src/gradients.ts b/src/gradients.ts index 847d779245..e26ee83601 100644 --- a/src/gradients.ts +++ b/src/gradients.ts @@ -53,21 +53,21 @@ export class Gradients { * // f(x) = x ^ 2 * const f = x => x.square(); * // f'(x) = 2x - * const g = dl.grad(f); + * const g = tf.grad(f); * - * const x = dl.tensor1d([2, 3]); + * const x = tf.tensor1d([2, 3]); * g(x).print(); * ``` * * ```js * // f(x) = x ^ 3 - * const f = x => x.pow(dl.scalar(3, 'int32')); + * const f = x => x.pow(tf.scalar(3, 'int32')); * // f'(x) = 3x ^ 2 - * const g = dl.grad(f); + * const g = tf.grad(f); * // f''(x) = 6x - * const gg = dl.grad(g); + * const gg = tf.grad(g); * - * const x = dl.tensor1d([2, 3]); + * const x = tf.tensor1d([2, 3]); * gg(x).print(); * ``` * @@ -111,10 +111,10 @@ export class Gradients { * // f(a, b) = a * b * const f = (a, b) => a.mul(b); * // df / da = b, df / db = a - * const g = dl.grads(f); + * const g = tf.grads(f); * - * const a = dl.tensor1d([2, 3]); - * const b = dl.tensor1d([-2, -3]); + * const a = tf.tensor1d([2, 3]); + * const b = tf.tensor1d([-2, -3]); * const [da, db] = g([a, b]); * console.log('da'); * da.print(); @@ -150,7 +150,7 @@ export class Gradients { } /** - * Like `dl.grad`, but also returns the value of `f()`. Useful when `f()` + * Like `grad`, but also returns the value of `f()`. Useful when `f()` * returns a metric you want to show. * * The result is a rich object with the following properties: @@ -161,9 +161,9 @@ export class Gradients { * // f(x) = x ^ 2 * const f = x => x.square(); * // f'(x) = 2x - * const g = dl.valueAndGrad(f); + * const g = tf.valueAndGrad(f); * - * const x = dl.tensor1d([2, 3]); + * const x = tf.tensor1d([2, 3]); * const {value, grad} = g(x); * * console.log('value'); @@ -206,10 +206,10 @@ export class Gradients { * // f(a, b) = a * b * const f = (a, b) => a.mul(b); * // df/da = b, df/db = a - * const g = dl.valueAndGrads(f); + * const g = tf.valueAndGrads(f); * - * const a = dl.tensor1d([2, 3]); - * const b = dl.tensor1d([-2, -3]); + * const a = tf.tensor1d([2, 3]); + * const b = tf.tensor1d([-2, -3]); * const {value, grads} = g([a, b]); * * const [da, db] = grads; @@ -257,14 +257,14 @@ export class Gradients { * defaults to all trainable variables. * * ```js - * const a = dl.variable(dl.tensor1d([3, 4])); - * const b = dl.variable(dl.tensor1d([5, 6])); - * const x = dl.tensor1d([1, 2]); + * const a = tf.variable(tf.tensor1d([3, 4])); + * const b = tf.variable(tf.tensor1d([5, 6])); + * const x = tf.tensor1d([1, 2]); * * // f(a, b) = a * x ^ 2 + b * x * const f = () => a.mul(x.square()).add(b.mul(x)).sum(); * // df/da = x ^ 2, df/db = x - * const {value, grads} = dl.variableGrads(f); + * const {value, grads} = tf.variableGrads(f); * * Object.keys(grads).forEach(varName => grads[varName].print()); * ``` @@ -332,13 +332,13 @@ export class Gradients { * respect to each input of `f` are computed using `f().gradFunc`. * * ```js - * const customOp = dl.customGrad(x => { + * const customOp = tf.customGrad(x => { * // Override gradient of our custom x ^ 2 op to be dy * abs(x); * return {value: x.square(), gradFunc: dy => [dy.mul(x.abs())]}; * }); * - * const x = dl.tensor1d([-1, -2, 3]); - * const dx = dl.grad(x => customOp(x)); + * const x = tf.tensor1d([-1, -2, 3]); + * const dx = tf.grad(x => customOp(x)); * * console.log(`f(x):`); * customOp(x).print(); diff --git a/src/ops/array_ops.ts b/src/ops/array_ops.ts index a6a37723df..6ce0130063 100644 --- a/src/ops/array_ops.ts +++ b/src/ops/array_ops.ts @@ -36,18 +36,18 @@ export class ArrayOps { * * ```js * // Pass an array of values to create a vector. - * dl.tensor([1, 2, 3, 4]).print(); + * tf.tensor([1, 2, 3, 4]).print(); * ``` * * ```js * // Pass a nested array of values to make a matrix or a higher * // dimensional tensor. - * dl.tensor([[1, 2], [3, 4]]).print(); + * tf.tensor([[1, 2], [3, 4]]).print(); * ``` * * ```js * // Pass a flat array and specify a shape yourself. - * dl.tensor([1, 2, 3, 4], [2, 2]).print(); + * tf.tensor([1, 2, 3, 4], [2, 2]).print(); * ``` * * @param values The values of the tensor. Can be nested array of numbers, @@ -80,12 +80,11 @@ export class ArrayOps { /** * Creates rank-0 `Tensor` (scalar) with the provided value and dtype. * - * This method is mainly for self documentation and TypeScript typings as the - * same functionality can be achieved with `tensor`. In general, we recommend - * using this method as it makes code more readable. + * The same functionality can be achieved with `tensor`, but in general + * we recommend using `scalar` as it makes the code more readable. * * ```js - * dl.scalar(3.14).print(); + * tf.scalar(3.14).print(); * ``` * * @param value The value of the scalar. @@ -104,12 +103,11 @@ export class ArrayOps { /** * Creates rank-1 `Tensor` with the provided values, shape and dtype. * - * This method is mainly for self documentation and TypeScript typings as the - * same functionality can be achieved with `tensor`. In general, we recommend - * using this method as it makes code more readable. + * The same functionality can be achieved with `tensor`, but in general + * we recommend using `tensor1d` as it makes the code more readable. * * ```js - * dl.tensor1d([1, 2, 3]).print(); + * tf.tensor1d([1, 2, 3]).print(); * ``` * * @param values The values of the tensor. Can be array of numbers, @@ -129,17 +127,16 @@ export class ArrayOps { /** * Creates rank-2 `Tensor` with the provided values, shape and dtype. * - * This method is mainly for self documentation and TypeScript typings as the - * same functionality can be achieved with `tensor`. In general, we recommend - * using this method as it makes code more readable. + * The same functionality can be achieved with `tensor`, but in general + * we recommend using `tensor2d` as it makes the code more readable. * * ```js * // Pass a nested array. - * dl.tensor2d([[1, 2], [3, 4]]).print(); + * tf.tensor2d([[1, 2], [3, 4]]).print(); * ``` * ```js * // Pass a flat array and specify a shape. - * dl.tensor2d([1, 2, 3, 4], [2, 2]).print(); + * tf.tensor2d([1, 2, 3, 4], [2, 2]).print(); * ``` * * @param values The values of the tensor. Can be nested array of numbers, @@ -165,17 +162,16 @@ export class ArrayOps { /** * Creates rank-3 `Tensor` with the provided values, shape and dtype. * - * This method is mainly for self documentation and TypeScript typings as - * the same functionality can be achieved with `tensor`. In general, we - * recommend using this method as it makes code more readable. + * The same functionality can be achieved with `tensor`, but in general + * we recommend using `tensor3d` as it makes the code more readable. * * ```js * // Pass a nested array. - * dl.tensor3d([[[1], [2]], [[3], [4]]]).print(); + * tf.tensor3d([[[1], [2]], [[3], [4]]]).print(); * ``` * ```js * // Pass a flat array and specify a shape. - * dl.tensor3d([1, 2, 3, 4], [2, 2, 1]).print(); + * tf.tensor3d([1, 2, 3, 4], [2, 2, 1]).print(); * ``` * * @param values The values of the tensor. Can be nested array of numbers, @@ -200,13 +196,17 @@ export class ArrayOps { /** * Creates rank-4 `Tensor` with the provided values, shape and dtype. + * + * The same functionality can be achieved with `tensor`, but in general + * we recommend using `tensor4d` as it makes the code more readable. + * * ```js * // Pass a nested array. - * dl.tensor4d([[[[1], [2]], [[3], [4]]]]).print(); + * tf.tensor4d([[[[1], [2]], [[3], [4]]]]).print(); * ``` * ```js * // Pass a flat array and specify a shape. - * dl.tensor4d([1, 2, 3, 4], [1, 2, 2, 1]).print(); + * tf.tensor4d([1, 2, 3, 4], [1, 2, 2, 1]).print(); * ``` * * @param values The values of the tensor. Can be nested array of numbers, @@ -233,7 +233,7 @@ export class ArrayOps { * Creates a `Tensor` with all elements set to 1. * * ```js - * dl.ones([2, 2]).print(); + * tf.ones([2, 2]).print(); * ``` * * @param shape An array of integers defining the output tensor shape. @@ -252,7 +252,7 @@ export class ArrayOps { * Creates a `Tensor` with all elements set to 0. * * ```js - * dl.zeros([2, 2]).print(); + * tf.zeros([2, 2]).print(); * ``` * * @param shape An array of integers defining the output tensor shape. @@ -271,7 +271,7 @@ export class ArrayOps { * Creates a `Tensor` filled with a scalar value. * * ```js - * dl.fill([2, 2], 4).print(); + * tf.fill([2, 2], 4).print(); * ``` * * @param shape An array of integers defining the output tensor shape. @@ -295,8 +295,8 @@ export class ArrayOps { * given tensor. * * ```js - * const x = dl.tensor([1, 2]); - * dl.onesLike(x).print(); + * const x = tf.tensor([1, 2]); + * tf.onesLike(x).print(); * ``` * @param x A tensor. */ @@ -311,8 +311,8 @@ export class ArrayOps { * given tensor. * * ```js - * const x = dl.tensor([1, 2]); - * dl.zerosLike(x).print(); + * const x = tf.tensor([1, 2]); + * tf.zerosLike(x).print(); * ``` * * @param x The tensor of required shape. @@ -328,7 +328,7 @@ export class ArrayOps { * tensor. * * ```js - * const x = dl.tensor([1, 2]); + * const x = tf.tensor([1, 2]); * x.clone().print(); * ``` * @@ -344,7 +344,7 @@ export class ArrayOps { * Creates a `Tensor` with values sampled from a normal distribution. * * ```js - * dl.randomNormal([2, 2]).print(); + * tf.randomNormal([2, 2]).print(); * ``` * * @param shape An array of integers defining the output tensor shape. @@ -375,7 +375,7 @@ export class ArrayOps { * distribution. * * ```js - * dl.truncatedNormal([2, 2]).print(); + * tf.truncatedNormal([2, 2]).print(); * ``` * * The generated values follow a normal distribution with specified mean and @@ -413,7 +413,7 @@ export class ArrayOps { * bound maxval is excluded. * * ```js - * dl.randomUniform([2, 2]).print(); + * tf.randomUniform([2, 2]).print(); * ``` * * @param shape An array of integers defining the output tensor shape. @@ -518,7 +518,7 @@ export class ArrayOps { * `offValue` (defaults to 0). * * ```js - * dl.oneHot(dl.tensor1d([0, 1]), 3).print(); + * tf.oneHot(tf.tensor1d([0, 1]), 3).print(); * ``` * * @param indices 1D Array of indices. @@ -550,7 +550,7 @@ export class ArrayOps { * image.data[2] = 200; * image.data[3] = 255; * - * dl.fromPixels(image).print(); + * tf.fromPixels(image).print(); * ``` * * @param pixels The input image to construct the tensor from. @@ -587,7 +587,7 @@ export class ArrayOps { * tensor. * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * x.reshape([2, 2]).print(); * ``` * @@ -613,7 +613,7 @@ export class ArrayOps { * Removes dimensions of size 1 from the shape of a `Tensor`. * * ```js - * const x = dl.tensor([1, 2, 3, 4], [1, 1, 4]); + * const x = tf.tensor([1, 2, 3, 4], [1, 1, 4]); * x.squeeze().print(); * ``` * @@ -631,8 +631,8 @@ export class ArrayOps { * Casts a `Tensor` to a new dtype. * * ```js - * const x = dl.tensor1d([1.5, 2.5, 3]); - * dl.cast(x, 'int32').print(); + * const x = tf.tensor1d([1.5, 2.5, 3]); + * tf.cast(x, 'int32').print(); * ``` * @param x The input tensor to be casted. * @param dtype The dtype to cast the input tensor to. @@ -657,13 +657,13 @@ export class ArrayOps { * `[a, b, c, d]` by `[2]` produces `[a, b, c, d, a, b, c, d]`. * * ```js - * const a = dl.tensor1d([1, 2]); + * const a = tf.tensor1d([1, 2]); * * a.tile([2]).print(); // or a.tile([2]) * ``` * * ```js - * const a = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const a = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * a.tile([1, 2]).print(); // or a.tile([1, 2]) * ``` @@ -734,15 +734,15 @@ export class ArrayOps { * Gather slices from tensor `x`'s axis `axis` according to `indices`. * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); - * const indices = dl.tensor1d([1, 3, 3]); + * const x = tf.tensor1d([1, 2, 3, 4]); + * const indices = tf.tensor1d([1, 3, 3]); * * x.gather(indices).print(); * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); - * const indices = dl.tensor1d([1, 1, 0]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); + * const indices = tf.tensor1d([1, 1, 0]); * * x.gather(indices).print(); * ``` @@ -818,11 +818,10 @@ export class ArrayOps { /** * Pads a `Tensor` with a given value and paddings. * - * This operation currently only implements the `CONSTANT` mode from - * Tensorflow's `pad` operation. + * This operation currently only implements the `CONSTANT` mode. * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * x.pad([[1, 2]]).print(); * ``` * @param x The tensor to pad. @@ -853,10 +852,10 @@ export class ArrayOps { * Stacks a list of rank-`R` `Tensor`s into one rank-`(R+1)` `Tensor`. * * ```js - * const a = dl.tensor1d([1, 2]); - * const b = dl.tensor1d([3, 4]); - * const c = dl.tensor1d([5, 6]); - * dl.stack([a, b, c]).print(); + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); + * const c = tf.tensor1d([5, 6]); + * tf.stack([a, b, c]).print(); * ``` * * @param tensors A list of tensor objects with the same shape and dtype. @@ -892,7 +891,7 @@ export class ArrayOps { * into the tensor's shape. * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * const axis = 1; * x.expandDims(axis).print(); * ``` @@ -914,7 +913,7 @@ export class ArrayOps { * Return an evenly spaced sequence of numbers over the given interval. * * ```js - * dl.linspace(0, 9, 10).print(); + * tf.linspace(0, 9, 10).print(); * ``` * @param start The start value of the sequence. * @param stop The end value of the sequence. @@ -948,7 +947,7 @@ export class ArrayOps { * supported. * * ```js - * dl.range(0, 9, 2).print(); + * tf.range(0, 9, 2).print(); * ``` * * @param start An integer start value @@ -1003,7 +1002,7 @@ export class ArrayOps { * * ```js * // Create a buffer and set values at particular indices. - * const buffer = dl.buffer([2, 2]); + * const buffer = tf.buffer([2, 2]); * buffer.set(3, 0, 0); * buffer.set(5, 1, 0); * @@ -1027,7 +1026,7 @@ export class ArrayOps { * * ```js * const verbose = true; - * dl.tensor2d([1, 2, 3, 4], [2, 2]).print(verbose); + * tf.tensor2d([1, 2, 3, 4], [2, 2]).print(verbose); * ``` * @param x The tensor to be printed. * @param verbose Whether to print verbose information about the ` Tensor`, diff --git a/src/ops/binary_ops.ts b/src/ops/binary_ops.ts index 2a86523fc0..672f8aec32 100644 --- a/src/ops/binary_ops.ts +++ b/src/ops/binary_ops.ts @@ -32,18 +32,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([1, 2, 3, 4]); - * const b = dl.tensor1d([10, 20, 30, 40]); + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.tensor1d([10, 20, 30, 40]); * - * a.add(b).print(); // or dl.add(a, b) + * a.add(b).print(); // or tf.add(a, b) * ``` * * ```js * // Broadcast add a with b. - * const a = dl.scalar(5); - * const b = dl.tensor1d([10, 20, 30, 40]); + * const a = tf.scalar(5); + * const b = tf.tensor1d([10, 20, 30, 40]); * - * a.add(b).print(); // or dl.add(a, b) + * a.add(b).print(); // or tf.add(a, b) * ``` * @param a The first `Tensor` to add. * @param b The second `Tensor` to add. Must have the same type as `a`. @@ -98,18 +98,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([10, 20, 30, 40]); - * const b = dl.tensor1d([1, 2, 3, 4]); + * const a = tf.tensor1d([10, 20, 30, 40]); + * const b = tf.tensor1d([1, 2, 3, 4]); * - * a.sub(b).print(); // or dl.sub(a, b) + * a.sub(b).print(); // or tf.sub(a, b) * ``` * * ```js * // Broadcast subtract a with b. - * const a = dl.tensor1d([10, 20, 30, 40]); - * const b = dl.scalar(5); + * const a = tf.tensor1d([10, 20, 30, 40]); + * const b = tf.scalar(5); * - * a.sub(b).print(); // or dl.sub(a, b) + * a.sub(b).print(); // or tf.sub(a, b) * ``` * @param a The first `Tensor` to subtract from. * @param b The second `Tensor` to be subtracted. Must have the same dtype as @@ -167,17 +167,17 @@ export class BinaryOps { * corresponding elements in x and y. * * ```js - * const a = dl.tensor([[2, 3], [4, 5]]) - * const b = dl.tensor([[1, 2], [3, 0]]).toInt(); + * const a = tf.tensor([[2, 3], [4, 5]]) + * const b = tf.tensor([[1, 2], [3, 0]]).toInt(); * - * a.pow(b).print(); // or dl.pow(a, b) + * a.pow(b).print(); // or tf.pow(a, b) * ``` * * ```js - * const a = dl.tensor([[1, 2], [3, 4]]) - * const b = dl.tensor(2).toInt(); + * const a = tf.tensor([[1, 2], [3, 4]]) + * const b = tf.tensor(2).toInt(); * - * a.pow(b).print(); // or dl.pow(a, b) + * a.pow(b).print(); // or tf.pow(a, b) * ``` * We also expose `powStrict` which has the same signature as this op and * asserts that `base` and `exp` are the same shape (does not broadcast). @@ -198,8 +198,8 @@ export class BinaryOps { } const derBase = () => { const expFloat = exp.toFloat(); - const dx = expFloat.mul( - base.toFloat().pow(expFloat.sub(scalar(1)))) as T; + const dx = + expFloat.mul(base.toFloat().pow(expFloat.sub(scalar(1)))) as T; return dy.mulStrict(dx) as T; }; return {base: derBase}; @@ -230,18 +230,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([1, 2, 3, 4]); - * const b = dl.tensor1d([2, 3, 4, 5]); + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.tensor1d([2, 3, 4, 5]); * - * a.mul(b).print(); // or dl.mul(a, b) + * a.mul(b).print(); // or tf.mul(a, b) * ``` * * ```js * // Broadcast mul a with b. - * const a = dl.tensor1d([1, 2, 3, 4]); - * const b = dl.scalar(5); + * const a = tf.tensor1d([1, 2, 3, 4]); + * const b = tf.scalar(5); * - * a.mul(b).print(); // or dl.mul(a, b) + * a.mul(b).print(); // or tf.mul(a, b) * ``` * @param a The first tensor to multiply. * @param b The second tensor to multiply. Must have the same dtype as `a`. @@ -298,18 +298,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([1, 4, 9, 16]); - * const b = dl.tensor1d([1, 2, 3, 4]); + * const a = tf.tensor1d([1, 4, 9, 16]); + * const b = tf.tensor1d([1, 2, 3, 4]); * - * a.div(b).print(); // or dl.div(a, b) + * a.div(b).print(); // or tf.div(a, b) * ``` * * ```js * // Broadcast div a with b. - * const a = dl.tensor1d([2, 4, 6, 8]); - * const b = dl.scalar(2); + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(2); * - * a.div(b).print(); // or dl.div(a, b) + * a.div(b).print(); // or tf.div(a, b) * ``` * * @param a The first tensor as the numerator. @@ -366,18 +366,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([1, 4, 3, 16]); - * const b = dl.tensor1d([1, 2, 9, 4]); + * const a = tf.tensor1d([1, 4, 3, 16]); + * const b = tf.tensor1d([1, 2, 9, 4]); * - * a.minimum(b).print(); // or dl.minimum(a, b) + * a.minimum(b).print(); // or tf.minimum(a, b) * ``` * * ```js * // Broadcast minimum a with b. - * const a = dl.tensor1d([2, 4, 6, 8]); - * const b = dl.scalar(5); + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(5); * - * a.minimum(b).print(); // or dl.minimum(a, b) + * a.minimum(b).print(); // or tf.minimum(a, b) * ``` * * @param a The first tensor. @@ -418,18 +418,18 @@ export class BinaryOps { * asserts that `a` and `b` are the same shape (does not broadcast). * * ```js - * const a = dl.tensor1d([1, 4, 3, 16]); - * const b = dl.tensor1d([1, 2, 9, 4]); + * const a = tf.tensor1d([1, 4, 3, 16]); + * const b = tf.tensor1d([1, 2, 9, 4]); * - * a.maximum(b).print(); // or dl.maximum(a, b) + * a.maximum(b).print(); // or tf.maximum(a, b) * ``` * * ```js * // Broadcast maximum a with b. - * const a = dl.tensor1d([2, 4, 6, 8]); - * const b = dl.scalar(5); + * const a = tf.tensor1d([2, 4, 6, 8]); + * const b = tf.scalar(5); * - * a.maximum(b).print(); // or dl.maximum(a, b) + * a.maximum(b).print(); // or tf.maximum(a, b) * ``` * * @param a The first tensor. diff --git a/src/ops/concat.ts b/src/ops/concat.ts index e5e805808a..e5af04babc 100644 --- a/src/ops/concat.ts +++ b/src/ops/concat.ts @@ -122,23 +122,23 @@ export class ConcatOps { * dimensions except `axis`. * * ```js - * const a = dl.tensor1d([1, 2]); - * const b = dl.tensor1d([3, 4]); + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); * a.concat(b).print(); // or a.concat(b) * ``` * * ```js - * const a = dl.tensor1d([1, 2]); - * const b = dl.tensor1d([3, 4]); - * const c = dl.tensor1d([5, 6]); - * dl.concat([a, b, c]).print(); + * const a = tf.tensor1d([1, 2]); + * const b = tf.tensor1d([3, 4]); + * const c = tf.tensor1d([5, 6]); + * tf.concat([a, b, c]).print(); * ``` * * ```js - * const a = dl.tensor2d([[1, 2], [10, 20]]); - * const b = dl.tensor2d([[3, 4], [30, 40]]); + * const a = tf.tensor2d([[1, 2], [10, 20]]); + * const b = tf.tensor2d([[3, 4], [30, 40]]); * const axis = 1; - * dl.concat([a, b], axis).print(); + * tf.concat([a, b], axis).print(); * ``` * @param tensors A list of tensors to concatenate. * @param axis The axis to concate along. Defaults to 0 (the first dim). diff --git a/src/ops/matmul.ts b/src/ops/matmul.ts index 92f2704ebc..b41cf56574 100644 --- a/src/ops/matmul.ts +++ b/src/ops/matmul.ts @@ -26,10 +26,10 @@ export class MatmulOps { * Computes the dot product of two matrices, A * B. These must be matrices. * * ```js - * const a = dl.tensor2d([1, 2], [1, 2]); - * const b = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const a = tf.tensor2d([1, 2], [1, 2]); + * const b = tf.tensor2d([1, 2, 3, 4], [2, 2]); * - * a.matMul(b).print(); // or dl.matMul(a, b) + * a.matMul(b).print(); // or tf.matMul(a, b) * ``` * @param a First matrix in dot product operation. * @param b Second matrix in dot product operation. @@ -140,10 +140,10 @@ export class MatmulOps { * Computes the outer product of two vectors, v1 and v2. * * ```js - * const a = dl.tensor1d([1, 2, 3]); - * const b = dl.tensor1d([3, 4, 5]); + * const a = tf.tensor1d([1, 2, 3]); + * const b = tf.tensor1d([3, 4, 5]); * - * dl.outerProduct(a, b).print(); + * tf.outerProduct(a, b).print(); * ``` * @param v1 The first vector in the outer product operation. * @param v2 The second vector in the dot product operation. diff --git a/src/ops/norm.ts b/src/ops/norm.ts index 50685266b1..557f03e9f3 100644 --- a/src/ops/norm.ts +++ b/src/ops/norm.ts @@ -30,9 +30,9 @@ export class NormOps { * and matrix norms (Frobenius, 1-norm, and inf-norm). * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * - * x.norm().print(); // or dl.norm(x) + * x.norm().print(); // or tf.norm(x) * ``` * * @param x The input array. diff --git a/src/ops/reduction_ops.ts b/src/ops/reduction_ops.ts index 561b36061f..cd4a5a3b9d 100644 --- a/src/ops/reduction_ops.ts +++ b/src/ops/reduction_ops.ts @@ -35,16 +35,16 @@ export class ReductionOps { * single element is returned. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.logSumExp().print(); // or dl.logSumExp(x) + * x.logSumExp().print(); // or tf.logSumExp(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; - * x.logSumExp(axis).print(); // or dl.logSumExp(a, axis) + * x.logSumExp(axis).print(); // or tf.logSumExp(a, axis) * ``` * @param input The input tensor. * @param axis The dimension(s) to reduce. If null (the default), @@ -81,16 +81,16 @@ export class ReductionOps { * single element is returned. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.sum().print(); // or dl.logSumExp(x) + * x.sum().print(); // or tf.logSumExp(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; - * x.sum(axis).print(); // or dl.sum(x, axis) + * x.sum(axis).print(); // or tf.sum(x, axis) * ``` * * @param x The input tensor to compute the sum over. @@ -147,16 +147,16 @@ export class ReductionOps { * a single element is returned. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.mean().print(); // or dl.logSumExp(a) + * x.mean().print(); // or tf.logSumExp(a) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; - * x.mean(axis).print(); // or dl.mean(x, axis) + * x.mean(axis).print(); // or tf.mean(x, axis) * ``` * * @param x The input tensor. @@ -206,16 +206,16 @@ export class ReductionOps { * single element is returned. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.min().print(); // or dl.min(x) + * x.min().print(); // or tf.min(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; - * x.min(axis).print(); // or dl.min(x, axis) + * x.min(axis).print(); // or tf.min(x, axis) * ``` * * @param x The input Tensor. @@ -252,16 +252,16 @@ export class ReductionOps { * a single element is returned. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.max().print(); // or dl.max(x) + * x.max().print(); // or tf.max(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; - * x.max(axis).print(); // or dl.max(x, axis) + * x.max(axis).print(); // or tf.max(x, axis) * ``` * * @param x The input tensor. @@ -295,16 +295,16 @@ export class ReductionOps { * removed. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.argMin().print(); // or dl.argMin(x) + * x.argMin().print(); // or tf.argMin(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 4, 3], [2, 2]); + * const x = tf.tensor2d([1, 2, 4, 3], [2, 2]); * * const axis = 1; - * x.argMin(axis).print(); // or dl.argMin(x, axis) + * x.argMin(axis).print(); // or tf.argMin(x, axis) * ``` * * @param x The input tensor. @@ -331,16 +331,16 @@ export class ReductionOps { * removed. * * ```js - * const x = dl.tensor1d([1, 2, 3]); + * const x = tf.tensor1d([1, 2, 3]); * - * x.argMax().print(); // or dl.argMax(x) + * x.argMax().print(); // or tf.argMax(x) * ``` * * ```js - * const x = dl.tensor2d([1, 2, 4, 3], [2, 2]); + * const x = tf.tensor2d([1, 2, 4, 3], [2, 2]); * * const axis = 1; - * x.argMax(axis).print(); // or dl.argMax(x, axis) + * x.argMax(axis).print(); // or tf.argMax(x, axis) * ``` * * @param x The input tensor. diff --git a/src/ops/reverse.ts b/src/ops/reverse.ts index 20bd76b4c0..ee413813da 100644 --- a/src/ops/reverse.ts +++ b/src/ops/reverse.ts @@ -75,13 +75,13 @@ export class ReverseOps { * Reverses a `Tensor` along a specified axis. * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * * x.reverse().print(); * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * const axis = 1; * x.reverse(axis).print(); diff --git a/src/ops/slice.ts b/src/ops/slice.ts index 4437a0d4a1..7e942000b4 100644 --- a/src/ops/slice.ts +++ b/src/ops/slice.ts @@ -79,19 +79,19 @@ export class SliceOps { * * Also available are stricter rank-specific methods with the same signature * as this method that assert that `x` is of the given rank: - * - `dl.slice1d` - * - `dl.slice2d` - * - `dl.slice3d` - * - `dl.slice4d` + * - `tf.slice1d` + * - `tf.slice2d` + * - `tf.slice3d` + * - `tf.slice4d` * * ```js - * const x = dl.tensor1d([1, 2, 3, 4]); + * const x = tf.tensor1d([1, 2, 3, 4]); * * x.slice([1], [2]).print(); * ``` * * ```js - * const x = dl.tensor2d([1, 2, 3, 4], [2, 2]); + * const x = tf.tensor2d([1, 2, 3, 4], [2, 2]); * * x.slice([1, 0], [1, 2]).print(); * ``` diff --git a/src/ops/softmax.ts b/src/ops/softmax.ts index ea1cc84cd8..cd4c0b977a 100644 --- a/src/ops/softmax.ts +++ b/src/ops/softmax.ts @@ -29,15 +29,15 @@ export class SoftmaxOps { * Computes the softmax normalized vector given the logits. * * ```js - * const a = dl.tensor1d([1, 2, 3]); + * const a = tf.tensor1d([1, 2, 3]); * - * a.softmax().print(); // or dl.softmax(a) + * a.softmax().print(); // or tf.softmax(a) * ``` * * ```js - * const a = dl.tensor2d([2, 4, 6, 1, 2, 3], [2, 3]); + * const a = tf.tensor2d([2, 4, 6, 1, 2, 3], [2, 3]); * - * a.softmax().print(); // or dl.softmax(a) + * a.softmax().print(); // or tf.softmax(a) * ``` * * @param logits The logits array. diff --git a/src/ops/transpose.ts b/src/ops/transpose.ts index a725174075..d2a18f99ad 100644 --- a/src/ops/transpose.ts +++ b/src/ops/transpose.ts @@ -32,9 +32,9 @@ export class TransposeOps { * operation performs a regular matrix transpose on 2-D input `Tensor`s. * * ```js - * const a = dl.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); + * const a = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); * - * a.transpose().print(); // or dl.transpose(a) + * a.transpose().print(); // or tf.transpose(a) * ``` * * @param x The tensor to transpose. diff --git a/src/ops/unary_ops.ts b/src/ops/unary_ops.ts index 01ef0d370e..aed5d3efb2 100644 --- a/src/ops/unary_ops.ts +++ b/src/ops/unary_ops.ts @@ -29,9 +29,9 @@ export class UnaryOps { * Computes `-1 * x` element-wise. * * ```js - * const x = dl.tensor2d([1, 2, -2, 0], [2, 2]); + * const x = tf.tensor2d([1, 2, -2, 0], [2, 2]); * - * x.neg().print(); // or dl.neg(x) + * x.neg().print(); // or tf.neg(x) * ``` * * @param x The input tensor. @@ -49,9 +49,9 @@ export class UnaryOps { * Computes ceiling of input `Tensor` element-wise: `ceil(x)` * * ```js - * const x = dl.tensor1d([.6, 1.1, -3.3]); + * const x = tf.tensor1d([.6, 1.1, -3.3]); * - * x.ceil().print(); // or dl.ceil(x) + * x.ceil().print(); // or tf.ceil(x) * ``` * @param x The input Tensor. */ @@ -69,9 +69,9 @@ export class UnaryOps { * Computes floor of input `Tensor` element-wise: `floor(x)`. * * ```js - * const x = dl.tensor1d([.6, 1.1, -3.3]); + * const x = tf.tensor1d([.6, 1.1, -3.3]); * - * x.floor().print(); // or dl.floor(x) + * x.floor().print(); // or tf.floor(x) * ``` * @param x The input tensor. */ @@ -90,9 +90,9 @@ export class UnaryOps { * Computes exponential of the input `Tensor` element-wise. `e ^ x` * * ```js - * const x = dl.tensor1d([1, 2, -3]); + * const x = tf.tensor1d([1, 2, -3]); * - * x.exp().print(); // or dl.exp(x) + * x.exp().print(); // or tf.exp(x) * ``` * @param x The input tensor. */ @@ -111,9 +111,9 @@ export class UnaryOps { * Computes natural logarithm of the input `Tensor` element-wise: `ln(x)` * * ```js - * const x = dl.tensor1d([1, 2, Math.E]); + * const x = tf.tensor1d([1, 2, Math.E]); * - * x.log().print(); // or dl.log(x) + * x.log().print(); // or tf.log(x) * ``` * @param x The input tensor. */ @@ -131,9 +131,9 @@ export class UnaryOps { * element-wise: `ln(1 + x)` * * ```js - * const x = dl.tensor1d([1, 2, Math.E - 1]); + * const x = tf.tensor1d([1, 2, Math.E - 1]); * - * x.log1p().print(); // or dl.log1p(x) + * x.log1p().print(); // or tf.log1p(x) * ``` * @param x The input tensor. */ @@ -150,9 +150,9 @@ export class UnaryOps { * Computes square root of the input `Tensor` element-wise: `y = sqrt(x)` * * ```js - * const x = dl.tensor1d([1, 2, 4, -1]); + * const x = tf.tensor1d([1, 2, 4, -1]); * - * x.sqrt().print(); // or dl.sqrt(x) + * x.sqrt().print(); // or tf.sqrt(x) * ``` * @param x The input tensor. */ @@ -169,9 +169,9 @@ export class UnaryOps { * Computes square of `x` element-wise: `x ^ 2` * * ```js - * const x = dl.tensor1d([1, 2, Math.sqrt(2), -1]); + * const x = tf.tensor1d([1, 2, Math.sqrt(2), -1]); * - * x.square().print(); // or dl.square(x) + * x.square().print(); // or tf.square(x) * ``` * @param x The input Tensor. */ @@ -188,9 +188,9 @@ export class UnaryOps { * Computes absolute value element-wise: `abs(x)` * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); + * const x = tf.tensor1d([-1, 2, -3, 4]); * - * x.abs().print(); // or dl.abs(x) + * x.abs().print(); // or tf.abs(x) * ``` * @param x The input `Tensor`. */ @@ -207,9 +207,9 @@ export class UnaryOps { * Clips values element-wise. `max(min(x, clipValueMax), clipValueMin)` * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); + * const x = tf.tensor1d([-1, 2, -3, 4]); * - * x.clipByValue(-2, 3).print(); // or dl.clipByValue(x, -2, 3) + * x.clipByValue(-2, 3).print(); // or tf.clipByValue(x, -2, 3) * ``` * @param x The input tensor. * @param clipValueMin Lower-bound of range to be clipped to. @@ -241,9 +241,9 @@ export class UnaryOps { * Computes rectified linear element-wise: `max(x, 0)` * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); + * const x = tf.tensor1d([-1, 2, -3, 4]); * - * x.relu().print(); // or dl.relu(x) + * x.relu().print(); // or tf.relu(x) * ``` * @param x The input tensor. */ @@ -261,9 +261,9 @@ export class UnaryOps { * Computes exponential linear element-wise, `x > 0 ? e ^ x - 1 : 0` * * ```js - * const x = dl.tensor1d([-1, 1, -3, 2]); + * const x = tf.tensor1d([-1, 1, -3, 2]); * - * x.elu().print(); // or dl.elu(x) + * x.elu().print(); // or tf.elu(x) * ``` * @param x The input tensor. */ @@ -282,9 +282,9 @@ export class UnaryOps { * `x < 0 ? scale * alpha * (exp(x) - 1) : x` * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); + * const x = tf.tensor1d([-1, 2, -3, 4]); * - * x.selu().print(); // or dl.selu(x) + * x.selu().print(); // or tf.selu(x) * ``` * @param x The input tensor. */ @@ -317,9 +317,9 @@ export class UnaryOps { * http://web.stanford.edu/~awni/papers/relu_hybrid_icml2013_final.pdf) * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); + * const x = tf.tensor1d([-1, 2, -3, 4]); * - * x.leakyRelu(0.1).print(); // or dl.leakyRelu(x, 0.1) + * x.leakyRelu(0.1).print(); // or tf.leakyRelu(x, 0.1) * ``` * @param x The input tensor. * @param alpha The scaling factor for negative values, defaults to 0.2. @@ -340,10 +340,10 @@ export class UnaryOps { * `x < 0 ? alpha * x : f(x) = x` * * ```js - * const x = dl.tensor1d([-1, 2, -3, 4]); - * const alpha = dl.scalar(0.1); + * const x = tf.tensor1d([-1, 2, -3, 4]); + * const alpha = tf.scalar(0.1); * - * x.prelu(alpha).print(); // or dl.prelu(x, alpha) + * x.prelu(alpha).print(); // or tf.prelu(x, alpha) * ``` * @param x The input tensor. * @param alpha Scaling factor for negative values. @@ -361,9 +361,9 @@ export class UnaryOps { * Computes sigmoid element-wise, `1 / (1 + exp(-x))` * * ```js - * const x = dl.tensor1d([0, -1, 2, -3]); + * const x = tf.tensor1d([0, -1, 2, -3]); * - * x.sigmoid().print(); // or dl.sigmoid(x) + * x.sigmoid().print(); // or tf.sigmoid(x) * ``` * @param x The input tensor. */ @@ -382,9 +382,9 @@ export class UnaryOps { * Computes sin of the input Tensor element-wise: `sin(x)` * * ```js - * const x = dl.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); + * const x = tf.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); * - * x.sin().print(); // or dl.sin(x) + * x.sin().print(); // or tf.sin(x) * ``` * @param x The input tensor. */ @@ -401,9 +401,9 @@ export class UnaryOps { * Computes cos of the input `Tensor` element-wise: `cos(x)` * * ```js - * const x = dl.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); + * const x = tf.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); * - * x.cos().print(); // or dl.cos(x) + * x.cos().print(); // or tf.cos(x) * ``` * @param x The input tensor. */ @@ -420,9 +420,9 @@ export class UnaryOps { * Computes tan of the input `Tensor` element-wise, `tan(x)` * * ```js - * const x = dl.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); + * const x = tf.tensor1d([0, Math.PI / 2, Math.PI * 3 / 4]); * - * x.tan().print(); // or dl.tan(x) + * x.tan().print(); // or tf.tan(x) * ``` * @param x The input tensor. */ @@ -439,9 +439,9 @@ export class UnaryOps { * Computes asin of the input `Tensor` element-wise: `asin(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, .7]); + * const x = tf.tensor1d([0, 1, -1, .7]); * - * x.asin().print(); // or dl.asin(x) + * x.asin().print(); // or tf.asin(x) * ``` * @param x The input tensor. */ @@ -461,9 +461,9 @@ export class UnaryOps { * Computes acos of the input `Tensor` element-wise: `acos(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, .7]); + * const x = tf.tensor1d([0, 1, -1, .7]); * - * x.acos().print(); // or dl.acos(x) + * x.acos().print(); // or tf.acos(x) * ``` * @param x The input tensor. */ @@ -484,9 +484,9 @@ export class UnaryOps { * Computes atan of the input `Tensor` element-wise: `atan(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, .7]); + * const x = tf.tensor1d([0, 1, -1, .7]); * - * x.atan().print(); // or dl.atan(x) + * x.atan().print(); // or tf.atan(x) * ``` * @param x The input tensor. */ @@ -503,9 +503,9 @@ export class UnaryOps { * Computes hyperbolic sin of the input `Tensor` element-wise: `sinh(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, .7]); + * const x = tf.tensor1d([0, 1, -1, .7]); * - * x.sinh().print(); // or dl.sinh(x) + * x.sinh().print(); // or tf.sinh(x) * ``` * @param x The input tensor. */ @@ -522,9 +522,9 @@ export class UnaryOps { * Computes hyperbolic cos of the input `Tensor` element-wise: `cosh(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, .7]); + * const x = tf.tensor1d([0, 1, -1, .7]); * - * x.cosh().print(); // or dl.cosh(x) + * x.cosh().print(); // or tf.cosh(x) * ``` * @param x The input tensor. */ @@ -541,9 +541,9 @@ export class UnaryOps { * Computes hyperbolic tangent of the input `Tensor` element-wise: `tanh(x)` * * ```js - * const x = dl.tensor1d([0, 1, -1, 70]); + * const x = tf.tensor1d([0, 1, -1, 70]); * - * x.tanh().print(); // or dl.tanh(x) + * x.tanh().print(); // or tf.tanh(x) * ``` * @param x The input tensor. */ @@ -562,9 +562,9 @@ export class UnaryOps { * Computes step of the input `Tensor` element-wise: `x > 0 ? 1 : alpha * x` * * ```js - * const x = dl.tensor1d([0, 2, -1, -3]); + * const x = tf.tensor1d([0, 2, -1, -3]); * - * x.step(.5).print(); // or dl.step(x, .5) + * x.step(.5).print(); // or tf.step(x, .5) * ``` * @param x The input tensor. * @param alpha The gradient when input is negative. diff --git a/src/optimizers/optimizer_constructors.ts b/src/optimizers/optimizer_constructors.ts index a77de1068a..9118f11ea1 100644 --- a/src/optimizers/optimizer_constructors.ts +++ b/src/optimizers/optimizer_constructors.ts @@ -31,19 +31,19 @@ export class OptimizerConstructors { * * ```js * // Fit a quadratic function by learning the coefficients a, b, c. - * const xs = dl.tensor1d([0, 1, 2, 3]); - * const ys = dl.tensor1d([1.1, 5.9, 16.8, 33.9]); + * const xs = tf.tensor1d([0, 1, 2, 3]); + * const ys = tf.tensor1d([1.1, 5.9, 16.8, 33.9]); * - * const a = dl.scalar(Math.random()).variable(); - * const b = dl.scalar(Math.random()).variable(); - * const c = dl.scalar(Math.random()).variable(); + * const a = tf.scalar(Math.random()).variable(); + * const b = tf.scalar(Math.random()).variable(); + * const c = tf.scalar(Math.random()).variable(); * * // y = a * x^2 + b * x + c. * const f = x => a.mul(x.square()).add(b.mul(x)).add(c); * const loss = (pred, label) => pred.sub(label).square().mean(); * * const learningRate = 0.01; - * const optimizer = dl.train.sgd(learningRate); + * const optimizer = tf.train.sgd(learningRate); * * // Train the model. * for (let i = 0; i < 10; i++) { diff --git a/src/tensor.ts b/src/tensor.ts index 08e54444a7..c445893c45 100644 --- a/src/tensor.ts +++ b/src/tensor.ts @@ -885,8 +885,8 @@ export class Variable extends Tensor { /** * Creates a new variable with the provided initial value. * ```js - * const x = dl.variable(dl.tensor([1, 2, 3])); - * x.assign(dl.tensor([4, 5, 6])); + * const x = tf.variable(tf.tensor([1, 2, 3])); + * x.assign(tf.tensor([4, 5, 6])); * * x.print(); * ``` diff --git a/src/tracking.ts b/src/tracking.ts index b53c912438..639b919b13 100644 --- a/src/tracking.ts +++ b/src/tracking.ts @@ -39,20 +39,20 @@ export class Tracking { * * ```js * // y = 2 ^ 2 + 1 - * const y = dl.tidy(() => { + * const y = tf.tidy(() => { * // a, b, and one will be cleaned up when the tidy ends. - * const one = dl.scalar(1); - * const a = dl.scalar(2); + * const one = tf.scalar(1); + * const a = tf.scalar(2); * const b = a.square(); * - * console.log('numTensors (in tidy): ' + dl.memory().numTensors); + * console.log('numTensors (in tidy): ' + tf.memory().numTensors); * * // The value returned inside the tidy function will return * // through the tidy, in this case to the variable y. * return b.add(one); * }); * - * console.log('numTensors (outside tidy): ' + dl.memory().numTensors); + * console.log('numTensors (outside tidy): ' + tf.memory().numTensors); * y.print(); * ``` * @@ -70,7 +70,7 @@ export class Tracking { if (fn == null) { // Called with only 1 argument. if (typeof nameOrFn !== 'function') { - throw new Error('Please provide a function to dl.tidy()'); + throw new Error('Please provide a function to tidy()'); } fn = nameOrFn; } else { @@ -78,12 +78,12 @@ export class Tracking { if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) { throw new Error( 'When calling with two arguments, the first argument ' + - 'to dl.tidy() must be a string'); + 'to tidy() must be a string'); } if (typeof fn !== 'function') { throw new Error( 'When calling with two arguments, the 2nd argument ' + - 'to dl.tidy() must be a function'); + 'to tidy() must be a function'); } name = nameOrFn as string; // TODO(nsthorat,smilkov): Do operation logging and performance @@ -119,22 +119,22 @@ export class Tracking { * * ```js * let b; - * const y = dl.tidy(() => { - * const one = dl.scalar(1); - * const a = dl.scalar(2); + * const y = tf.tidy(() => { + * const one = tf.scalar(1); + * const a = tf.scalar(2); * * // b will not be cleaned up by the tidy. a and one will be cleaned up * // when the tidy ends. - * b = dl.keep(a.square()); + * b = tf.keep(a.square()); * - * console.log('numTensors (in tidy): ' + dl.memory().numTensors); + * console.log('numTensors (in tidy): ' + tf.memory().numTensors); * * // The value returned inside the tidy function will return * // through the tidy, in this case to the variable y. * return b.add(one); * }); * - * console.log('numTensors (outside tidy): ' + dl.memory().numTensors); + * console.log('numTensors (outside tidy): ' + tf.memory().numTensors); * console.log('y:'); * y.print(); * console.log('b:'); @@ -161,8 +161,8 @@ export class Tracking { * - `downloadWaitMs`: CPU blocking time on texture downloads (readPixels). * * ```js - * const x = dl.randomNormal([20, 20]); - * const time = await dl.time(() => x.matMul(x)); + * const x = tf.randomNormal([20, 20]); + * const time = await tf.time(() => x.matMul(x)); * * console.log(`kernelMs: ${time.kernelMs}, wallTimeMs: ${time.wallMs}`); * ```