Wide array of established packages for data processing
Flexible, easily readable code
Easily portable
Cons:
Slow execution/compilation
Above average memory use
Java/Javascript
Pros:
Greater portability to website based UI
Quite fast
Wide support in various types of development
Cons:
Inconsistent between devices/browsers
Javascript use introduces some security flaws
Specialty Packages:
JavaML
Pros:
Works with Java
Cons:
Hasn’t been updated since 2012
PyTorch
Pros:
Closer-to-native integration/support & speed
Incredibly popular
Can utilize most of the usual python debugging tools
Cons:
Limited options when it comes to visualization of data
TensorFlow [Final Selection]
Pros:
Aligns with client’s knowledge of machine learning, enabling better meshing with client’s pre-existing application
Incredibly popular
Tensorboard offers a lot in terms of visualization
Cons:
Less popular than PyTorch, as such, prospective longevity is lower
Debugging is much less intuitive
Other tools:
Jupyter Notebook [Final Selection]
Pros:
Quick setup for development
Naturally segment code
Print values as individual segments execute
Runs in the browser via a kernel
Cons:
Not as integrated as something like PyCharm or VS Code
Difficulty debugging
Overall Decisions:
Since the main objective of our project is to train a model, we’re primarily concerned with making choices that affect our ability to work on the model quickly and in a portable format. Aside from that, the model is meant to be used with an app our client has already developed. Because of this, our work on a UI will be very light, if at all. Some members of our team had previously worked with Jupyter Notebooks/TensorFlow, so we decided to stick to those in our development process, especially since our client is most acquainted with TensorFlow in the simple work he’s done prior to us entering the scope of the project.