ml5-library
ml5-library copied to clipboard
[WIP/Broken]: Upgrade @tensorflow/tfjs versions to 3.x
Extends #1379 Related issue: #1337
I have installed version ^3.16.0 of all @tensorflow/tfjs packages. But a lot of things broke in the process. These are some of the known errors which need to be addressed:
- [ ]
SoundClassifier
The tfjs speechcommands model expects tensorflow version ^1.1.2. Attempting to run on 3.x causes errors regarding undefined Node.js variables path and process. This is the worst one as it actually breaks the whole build. I had to temporarily disable the model.
...But then I re-enabled and I couldn't reproduce the error 🤷
- [ ]
BodyPix
Expects tensorflow version ~1.2.1. There is a newer version of bodypix available, but the API is very different.
Error stack
Uncaught (in promise) TypeError: e.depthwiseConv2D is not a function
at e.separableConv (body-pix.esm.js:17:4034)
at body-pix.esm.js:17:3533
at Array.reduce (<anonymous>)
at e.predict (body-pix.esm.js:17:3366)
at body-pix.esm.js:17:7396
at engine.js:328:1
at Engine.scopedRun (engine.js:338:1)
at Engine.tidy (engine.js:327:1)
at tidy (globals.js:175:12)
at e.predictForSegmentation (body-pix.esm.js:17:7384)
 | e.separableConv | @ | body-pix.esm.js:17
-- | -- | -- | --
 | (anonymous) | @ | body-pix.esm.js:17
 | e.predict | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | e.predictForSegmentation | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | e.estimatePersonSegmentationActivation | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | (anonymous) | @ | body-pix.esm.js:17
 | __awaiter | @ | body-pix.esm.js:17
 | e.estimatePersonSegmentation | @ | body-pix.esm.js:17
 | _callee5$ | @ | index.js:298
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | await in _next (async) |  | Â
 | (anonymous) | @ | sketch.js:28
- [ ]
Facemesh
facemesh expects tensorflow version ^2.1.0 and its internal dependency blazeface expects 1.5.2. There is a newer version available under the package name @tensorflow-models/face-landmarks-detection.
I saw an error once, and then when I refreshed the page everything was fine! 🤷
Error stack
ml5.js:13317 Uncaught (in promise) ReferenceError: o is not defined
at ml5.js:13317:3843
at ml5.js:68126:22
at Engine.scopedRun (ml5.js:68136:25)
at Engine.tidy (ml5.js:68125:21)
at tidy (ml5.js:69377:59)
at M.getBoundingBoxes (ml5.js:13317:3784)
at e.<anonymous> (ml5.js:13317:11091)
at ml5.js:13317:1452
at Object.next (ml5.js:13317:1557)
at ml5.js:13317:494
(anonymous) | @ | ml5.js:13317
-- | -- | --
 | (anonymous) | @ | ml5.js:68126
 | scopedRun | @ | ml5.js:68136
 | tidy | @ | ml5.js:68125
 | tidy | @ | ml5.js:69377
 | getBoundingBoxes | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | y | @ | ml5.js:13317
 | e.predict | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | (anonymous) | @ | ml5.js:13317
 | y | @ | ml5.js:13317
 | t.estimateFaces | @ | ml5.js:13317
 | _callee2$ | @ | ml5.js:281864
 | tryCatch | @ | ml5.js:10802
 | invoke | @ | ml5.js:11033
 | (anonymous) | @ | ml5.js:10858
 | asyncGeneratorStep | @ | ml5.js:10354
 | _next | @ | ml5.js:10376
 | (anonymous) | @ | ml5.js:10383
 | (anonymous) | @ | ml5.js:10372
 | predict | @ | ml5.js:281899
 | modelReady | @ | sketch.js:30
 | doingPreloads | @ | ml5.js:294296
 | (anonymous) | @ | ml5.js:293315
 | Promise.then (async) |  | Â
 | asyncGeneratorStep | @ | ml5.js:10364
 | _next | @ | ml5.js:10376
 | (anonymous) | @ | ml5.js:10383
 | (anonymous) | @ | ml5.js:10372
 | predict | @ | ml5.js:281899
 | modelReady | @ | sketch.js:30
 | doingPreloads | @ | ml5.js:294296
 | (anonymous) | @ | ml5.js:293315
 | Promise.then (async) |  | Â
 | (anonymous) | @ | ml5.js:293314
 | callCallback | @ | ml5.js:293313
 | Facemesh | @ | ml5.js:281778
 | facemesh | @ | ml5.js:281947
 | preloads | @ | ml5.js:294292
 | imageReady | @ | sketch.js:20
 | t.onload | @ | p5.dom.min.js:3
 | load (async) |  | Â
 | d.createImg | @ | p5.dom.min.js:3
 | setup | @ | sketch.js:11
 | (anonymous) | @ | p5.min.js:3
 | (anonymous) | @ | p5.min.js:3
 | h | @ | p5.min.js:3
 | n | @ | p5.min.js:3
 | load (async) |  | Â
 | 21.../core/main | @ | p5.min.js:3
 | l | @ | p5.min.js:3
 | (anonymous) | @ | p5.min.js:3
 | 12../color/color_conversion | @ | p5.min.js:3
 | l | @ | p5.min.js:3
 | o | @ | p5.min.js:3
 | (anonymous) | @ | p5.min.js:3
 | (anonymous) | @ | p5.min.js:3
 | (anonymous) | @ | p5.min.js:3
- [ ]
FaceApi
face-api.js depends on tensorflow version 1.7.0 (not a range, that exact version). I don't know what the future of this package is. Maybe we can implement it using a different model behind the scenes. Maybe we don't need it at all since we have Facemesh. I believe there are forks of face-api.js out there which have updated dependencies.
Error stack
Uncaught (in promise) TypeError: forwardFunc is not a function
at engine.js:512:1
at engine.js:328:1
at Engine.scopedRun (engine.js:338:1)
at Engine.tidy (engine.js:327:1)
at kernelFunc (engine.js:512:1)
at engine.js:533:1
at Engine.scopedRun (engine.js:338:1)
at Engine.runKernelFunc (engine.js:529:1)
at Module.Hn (tf-core.esm.js:17:80734)
at normalize.js:6:21
(anonymous) | @ | engine.js:512
-- | -- | --
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | kernelFunc | @ | engine.js:512
 | (anonymous) | @ | engine.js:533
 | scopedRun | @ | engine.js:338
 | runKernelFunc | @ | engine.js:529
 | Hn | @ | tf-core.esm.js:17
 | (anonymous) | @ | normalize.js:6
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | Ze | @ | tf-core.esm.js:17
 | normalize | @ | normalize.js:4
 | (anonymous) | @ | TinyYolov2Base.js:92
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | Ze | @ | tf-core.esm.js:17
 | TinyYolov2Base.forwardInput | @ | TinyYolov2Base.js:89
 | (anonymous) | @ | TinyYolov2Base.js:126
 | step | @ | tslib.es6.js:100
 | (anonymous) | @ | tslib.es6.js:81
 | fulfilled | @ | tslib.es6.js:71
 | Promise.then (async) |  | Â
 | step | @ | tslib.es6.js:73
 | (anonymous) | @ | tslib.es6.js:74
 | __awaiter | @ | tslib.es6.js:70
 | ComposableTask.then | @ | ComposableTask.js:6
 | requestAnimationFrame (async) |  | Â
 | (anonymous) | @ | browser_util.js:37
 | nextFrame | @ | browser_util.js:37
 | _callee5$ | @ | index.js:307
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | Promise.then (async) |  | Â
 | asyncGeneratorStep | @ | asyncToGenerator.js:13
 | _next | @ | asyncToGenerator.js:25
 | (anonymous) | @ | asyncToGenerator.js:32
 | (anonymous) | @ | asyncToGenerator.js:21
 | detectSingleInternal | @ | index.js:305
 | _callee4$ | @ | index.js:297
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | (anonymous) | @ | asyncToGenerator.js:32
 | (anonymous) | @ | asyncToGenerator.js:21
 | detectSingle | @ | index.js:250
 | modelReady | @ | sketch.js:34
 | (anonymous) | @ | callcallback.js:32
 | Promise.then (async) |  | Â
 | (anonymous) | @ | callcallback.js:31
 | callCallback | @ | callcallback.js:29
 | FaceApiBase | @ | index.js:80
 | faceApi | @ | index.js:481
 | make | @ | sketch.js:23
 | (anonymous) | @ | sketch.js:29
- [ ]
SketchRNN
@magenta/sketch expects tensorflow version ^1.0.2. We have a few options here:
- We can attempt to update the dependencies on their end and put in a PR at their repo.
- We can copy their model code in our repo. We can potentially combine parts of
SketchRNNandCharRNNinto a genericLSTMmodelorRNNmodel. This would be cool and might make it easier to add other LSTM models in the future.
Error stack
Uncaught (in promise) TypeError: forwardFunc is not a function
at engine.js:512:1
at engine.js:328:1
at Engine.scopedRun (engine.js:338:1)
at Engine.tidy (engine.js:327:1)
at kernelFunc (engine.js:512:1)
at engine.js:533:1
at Engine.scopedRun (engine.js:338:1)
at Engine.runKernelFunc (engine.js:529:1)
at concat_ (tf-core.esm.js:17:82208)
at concat (tf-core.esm.js:17:71801)
(anonymous) | @ | engine.js:512
-- | -- | --
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | kernelFunc | @ | engine.js:512
 | (anonymous) | @ | engine.js:533
 | scopedRun | @ | engine.js:338
 | runKernelFunc | @ | engine.js:529
 | concat_ | @ | tf-core.esm.js:17
 | concat | @ | tf-core.esm.js:17
 | concat2d_ | @ | tf-core.esm.js:17
 | concat2d | @ | tf-core.esm.js:17
 | __webpack_modules__../node_modules/@magenta/sketch/es5/sketch_rnn/model.js.SketchRNN.instantiateFromJSON | @ | model.js:71
 | (anonymous) | @ | model.js:91
 | step | @ | model.js:32
 | (anonymous) | @ | model.js:13
 | fulfilled
- [ ]
MobileNet/ImageClassifier
The code runs without error but the prediction is incorrect.

- [ ]
Pix2Pix
The initial drawing in the example runs correctly. However I get an error when drawing on the canvas and clicking "Transfer".
It seems most likely due to some tensor getting disposed too early.
Error stack
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'backend')
at Engine.moveData (engine.js:289:1)
at DataStorage.get (backend.js:29:1)
at Object.conv2DBackpropInput [as kernelFunc] (Conv2DBackpropInput.js:31:1)
at kernelFunc (engine.js:472:1)
at engine.js:533:1
at Engine.scopedRun (engine.js:338:1)
at Engine.runKernelFunc (engine.js:529:1)
at Engine.runKernel (engine.js:402:1)
at conv2DBackpropInput_ (conv2d_backprop_input.js:74:17)
at conv2DBackpropInput__op (operation.js:44:1)
 | moveData | @ | engine.js:289
-- | -- | -- | --
 | get | @ | backend.js:29
 | conv2DBackpropInput | @ | Conv2DBackpropInput.js:31
 | kernelFunc | @ | engine.js:472
 | (anonymous) | @ | engine.js:533
 | scopedRun | @ | engine.js:338
 | runKernelFunc | @ | engine.js:529
 | runKernel | @ | engine.js:402
 | conv2DBackpropInput_ | @ | conv2d_backprop_input.js:74
 | conv2DBackpropInput__op | @ | operation.js:44
 | conv2dTranspose_ | @ | conv2d_transpose.js:27
 | conv2dTranspose__op | @ | operation.js:44
 | (anonymous) | @ | index.js:153
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | deconv2d | @ | index.js:152
 | (anonymous) | @ | index.js:90
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | _callee3$ | @ | index.js:52
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | (anonymous) | @ | asyncToGenerator.js:32
- [x]
StyleTransfer
I wonder if tensorflow changed the default dtype for certain tensors, based on the error that I get.
Error stack
Uncaught (in promise) Error: Argument 'x' passed to 'conv2d' must be float32 tensor, but got int32 tensor
at assertDtype (tensor_util_env.js:66:1)
at convertToTensor (tensor_util_env.js:72:1)
at conv2d_ (conv2d.js:57:31)
at Module.conv2d__op (operation.js:44:1)
at index.js:112:17
at engine.js:328:1
at Engine.scopedRun (engine.js:338:1)
at Engine.tidy (engine.js:327:1)
at Module.tidy (globals.js:175:12)
at StyleTransfer.convLayer (index.js:111:12)
 | assertDtype | @ | tensor_util_env.js:66
-- | -- | -- | --
 | convertToTensor | @ | tensor_util_env.js:72
 | conv2d_ | @ | conv2d.js:57
 | conv2d__op | @ | operation.js:44
 | (anonymous) | @ | index.js:112
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | convLayer | @ | index.js:111
 | (anonymous) | @ | index.js:189
 | (anonymous) | @ | engine.js:328
 | scopedRun | @ | engine.js:338
 | tidy | @ | engine.js:327
 | tidy | @ | globals.js:175
 | _callee4$ | @ | index.js:188
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | (anonymous) | @ | asyncToGenerator.js:32
 | (anonymous) | @ | asyncToGenerator.js:21
 | transferInternal | @ | index.js:186
 | _callee3$ | @ | index.js:178
 | tryCatch | @ | runtime.js:63
 | invoke | @ | runtime.js:294
 | (anonymous) | @ | runtime.js:119
 | asyncGeneratorStep | @ | asyncToGenerator.js:3
 | _next | @ | asyncToGenerator.js:25
 | (anonymous) | @ | asyncToGenerator.js:32
 | (anonymous) | @ | asyncToGenerator.js:21
 | transfer | @ | index.js:157
 | (anonymous) | @ | sketch.js:18
 | Promise.then (async) |  | Â
 | (anonymous) | @ | sketch.js:19
There might be others too, but this is plenty for me to work on!
@lindapaiste , not to pressure you but is there any progress on this?
Currently the following amount of vulnerabilities are showing up:
27 vulnerabilities (17 low, 10 high)
Here a npm audit report:
`
npm audit report
d3-color <3.1.0
Severity: high
d3-color vulnerable to ReDoS - https://github.com/advisories/GHSA-36jr-mh4h-2g58
fix available via npm audit fix
node_modules/d3-color
d3-interpolate 0.1.3 - 2.0.1
Depends on vulnerable versions of d3-color
node_modules/d3-interpolate
d3-scale 0.1.5 - 3.3.0
Depends on vulnerable versions of d3-interpolate
node_modules/d3-scale
vega-scale <=7.1.1
Depends on vulnerable versions of d3-interpolate
Depends on vulnerable versions of d3-scale
node_modules/vega-scale
vega 3.0.0-beta.0 - 3.3.1 || 5.0.0-rc1 - 5.21.0
Depends on vulnerable versions of vega-encode
Depends on vulnerable versions of vega-functions
Depends on vulnerable versions of vega-geo
Depends on vulnerable versions of vega-scale
node_modules/vega
@tensorflow/tfjs-vis *
Depends on vulnerable versions of glamor
Depends on vulnerable versions of vega
node_modules/@tensorflow/tfjs-vis
vega-encode <=4.8.3
Depends on vulnerable versions of d3-interpolate
node_modules/vega-encode
vega-functions <=5.12.1
Depends on vulnerable versions of d3-color
node_modules/vega-functions
vega-geo 4.2.0 - 4.3.8
Depends on vulnerable versions of d3-color
node_modules/vega-geo
node-fetch <=2.6.6
Severity: high
The size option isn't honored after following a redirect in node-fetch - https://github.com/advisories/GHSA-w7rc-rwvf-8q5r
node-fetch is vulnerable to Exposure of Sensitive Information to an Unauthorized Actor - https://github.com/advisories/GHSA-r683-j2x4-v87g
fix available via npm audit fix --force
Will install [email protected], which is a breaking change
node_modules/isomorphic-fetch/node_modules/node-fetch
node_modules/node-fetch
@tensorflow/tfjs-core 1.1.0 - 2.4.0
Depends on vulnerable versions of node-fetch
node_modules/@tensorflow/tfjs-core
node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core
node_modules/face-api.js/node_modules/@tensorflow/tfjs-core
@tensorflow-models/blazeface <=0.0.5
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/ml5/node_modules/@tensorflow-models/facemesh/node_modules/@tensorflow-models/blazeface
@tensorflow-models/facemesh *
Depends on vulnerable versions of @tensorflow-models/blazeface
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/ml5/node_modules/@tensorflow-models/facemesh
@tensorflow-models/body-pix 1.1.0 - 2.0.5
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/@tensorflow-models/body-pix
@tensorflow-models/handpose <=0.0.5
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/ml5/node_modules/@tensorflow-models/handpose
@tensorflow-models/knn-classifier 1.2.0 - 1.2.2
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/@tensorflow-models/knn-classifier
ml5 0.3.0 - 0.12.2
Depends on vulnerable versions of @magenta/sketch
Depends on vulnerable versions of @tensorflow-models/body-pix
Depends on vulnerable versions of @tensorflow-models/facemesh
Depends on vulnerable versions of @tensorflow-models/handpose
Depends on vulnerable versions of @tensorflow-models/knn-classifier
Depends on vulnerable versions of @tensorflow-models/mobilenet
Depends on vulnerable versions of @tensorflow-models/speech-commands
Depends on vulnerable versions of @tensorflow/tfjs
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
Depends on vulnerable versions of face-api.js
node_modules/ml5
@tensorflow-models/mobilenet 2.0.2 - 2.0.4
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/@tensorflow-models/mobilenet
@tensorflow/tfjs 0.14.0 - 2.4.0
Depends on vulnerable versions of @tensorflow/tfjs-converter
Depends on vulnerable versions of @tensorflow/tfjs-core
Depends on vulnerable versions of @tensorflow/tfjs-data
Depends on vulnerable versions of @tensorflow/tfjs-layers
node_modules/@tensorflow/tfjs
@magenta/sketch >=0.2.0
Depends on vulnerable versions of @tensorflow/tfjs
node_modules/@magenta/sketch
@tensorflow-models/speech-commands 0.2.3 - 0.4.2
Depends on vulnerable versions of @tensorflow/tfjs
node_modules/@tensorflow-models/speech-commands
@tensorflow/tfjs-converter 1.1.0 - 2.4.0
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/@tensorflow/tfjs-converter
node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-converter
@tensorflow/tfjs-data <=2.4.0
Depends on vulnerable versions of @tensorflow/tfjs-core
Depends on vulnerable versions of node-fetch
node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-data
@tensorflow/tfjs-layers 1.1.0 - 2.4.0
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-layers
face-api.js >=0.20.1
Depends on vulnerable versions of @tensorflow/tfjs-core
node_modules/face-api.js
isomorphic-fetch 2.0.0 - 2.2.1
Depends on vulnerable versions of node-fetch
node_modules/isomorphic-fetch
fbjs 0.7.0 - 1.0.0
Depends on vulnerable versions of isomorphic-fetch
node_modules/fbjs
glamor >=2.17.10
Depends on vulnerable versions of fbjs
node_modules/glamor
28 vulnerabilities (18 low, 10 high)
To address issues that do not require attention, run: npm audit fix `
@shiffman The models which I specified as needing work are the ones that your team has been working on re-implementing. My recollection is that all of the rest seemed fine. I wonder if it makes sense to use the new repo to work out the kinks, and then once you've got those models working to copy that code back over to this repo. Then bump the dependencies and delete the 1 or 2 broken models which we didn't update. It seems like a total pain to have to copy everything over to the new repo, and makes it harder to apply changes from current PRs.
This was for TFJS 3.x and they are up to 4.x now but they say that's a non-breaking version change. https://www.tensorflow.org/js/tutorials/upgrading_to_4_0 (the page title says 3.0 🙃) https://www.tensorflow.org/js/tutorials/upgrading_to_3_0 https://github.com/tensorflow/tfjs/releases/tag/tfjs-v4.0.0
@shiffman The models which I specified as needing work are the ones that your team has been working on re-implementing. My recollection is that all of the rest seemed fine. I wonder if it makes sense to use the new repo to work out the kinks, and then once you've got those models working to copy that code back over to this repo. Then bump the dependencies and delete the 1 or 2 broken models which we didn't update. It seems like a total pain to have to copy everything over to the new repo, and makes it harder to apply changes from current PRs.
This was for TFJS 3.x and they are up to 4.x now but they say that's a non-breaking version change. https://www.tensorflow.org/js/tutorials/upgrading_to_4_0 (the page title says 3.0 🙃) https://www.tensorflow.org/js/tutorials/upgrading_to_3_0 https://github.com/tensorflow/tfjs/releases/tag/tfjs-v4.0.0
Thank you for the info @lindapaiste! I understand, it's a tricky tradeoff. I think we have changed so much about the approach to which the library is developed and maintained that keeping with the new repo as a "fresh start" is preferable. This repo would get archived and "frozen in time" and we would point back towards and highlight issues, discussion, and code contributions that are relevant. We have a meeting at NYU tomorrow and I will bring this up for discussion!