Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hollance/tensorflow-ios-example
Source code for my blog post "Getting started with TensorFlow on iOS"
https://github.com/hollance/tensorflow-ios-example
ios logistic-regression machine-learning metal tensorflow voice-recognition
Last synced: 15 days ago
JSON representation
Source code for my blog post "Getting started with TensorFlow on iOS"
- Host: GitHub
- URL: https://github.com/hollance/tensorflow-ios-example
- Owner: hollance
- Created: 2017-03-05T18:16:26.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-03-06T14:23:21.000Z (over 7 years ago)
- Last Synced: 2024-08-04T07:04:14.897Z (3 months ago)
- Topics: ios, logistic-regression, machine-learning, metal, tensorflow, voice-recognition
- Language: Swift
- Size: 415 KB
- Stars: 441
- Watchers: 20
- Forks: 86
- Open Issues: 8
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
# TensorFlow on iOS demo
This is the code that accompanies my blog post [Getting started with TensorFlow on iOS](http://machinethink.net/blog/tensorflow-on-ios/).
It uses TensorFlow to train a basic binary classifier on the [Gender Recognition by Voice and Speech Analysis](https://www.kaggle.com/primaryobjects/voicegender) dataset.
This project includes the following:
- The dataset in the file **voice.csv**.
- Python scripts to train the model with TensorFlow on your Mac.
- An iOS app that uses the TensorFlow C++ API to do inference.
- An iOS app that uses Metal to do inference using the trained model.## Training the model
To train the model, do the following:
1. Make sure these are installed: `python3`, `numpy`, `pandas`, `scikit-learn`, `tensorflow`.
2. Run the **split_data.py** script to divide the dataset into a training set and a test set. This creates 4 new files: `X_train.npy`, `y_train.npy`, `X_test.npy`, and `y_test.npy`.
3. Run the **train.py** script. This trains the logistic classifier and saves the model to `/tmp/voice` every 10,000 training steps. Training happens in an infinite loop and goes on forever, so press Ctrl+C when you're happy with the training set accuracy and the loss no longer becomes any lower.
4. Run the **test.py** script to compute the accuracy on the test set. This also prints out a report with precision / recall / f1-score and a confusion matrix.## Using the model with the iOS TensorFlow app
To run the model on the iOS TensorFlow app, do the following:
1. Clone [TensorFlow](https://github.com/tensorflow) and [build the iOS library](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile).
2. Open the **VoiceTensorFlow** Xcode project. In **Build Settings**, **Other Linker Flags** and **Header Search Paths**, change the paths to your local installation of TensorFlow.The model is already included in the app as **inference.pb**. If you train the model with different settings, you need to run the `freeze_graph` and `optimize_for_inference` tools to create a new inference.pb.
## Using the model with the iOS Metal app
To run the model on the iOS Metal app, do the following:
1. Run the **export_weights.py** script. This creates two new files that contain the model's learned parameters: `W.bin` for the weights and `b.bin` for the bias.
2. Copy `W.bin` and `b.bin` into the **VoiceMetal** Xcode project and build the app.You need to run the Metal app on a device, it won't work in the simulator.