ml5-library icon indicating copy to clipboard operation
ml5-library copied to clipboard

[WIP/Broken]: Upgrade @tensorflow/tfjs versions to 3.x

Open lindapaiste opened this issue 3 years ago • 3 comments

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 SketchRNN and CharRNN into a generic LSTMmodel or RNNmodel. 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.

image


  • [ ] 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 avatar May 09 '22 03:05 lindapaiste

@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 `

RonHouben avatar Dec 23 '22 16:12 RonHouben

@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

lindapaiste avatar Feb 26 '24 18:02 lindapaiste

@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!

shiffman avatar Feb 28 '24 19:02 shiffman