Copy disabled (too large)
Download .txt
Showing preview only (10,737K chars total). Download the full file to get everything.
Repository: tensorflow/examples
Branch: master
Commit: 5ae5bbf6b9bc
Files: 1881
Total size: 9.8 MB
Directory structure:
gitextract_a1tly3__/
├── .gitignore
├── AUTHORS
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── __init__.py
├── courses/
│ ├── udacity_deep_learning/
│ │ ├── .gitignore
│ │ ├── 1_notmnist.ipynb
│ │ ├── 2_fullyconnected.ipynb
│ │ ├── 3_regularization.ipynb
│ │ ├── 4_convolutions.ipynb
│ │ ├── 5_word2vec.ipynb
│ │ ├── 6_lstm.ipynb
│ │ ├── Dockerfile
│ │ └── README.md
│ ├── udacity_intro_to_tensorflow_for_deep_learning/
│ │ ├── l01c01_introduction_to_colab_and_python.ipynb
│ │ ├── l02c01_celsius_to_fahrenheit.ipynb
│ │ ├── l03c01_classifying_images_of_clothing.ipynb
│ │ ├── l04c01_image_classification_with_cnns.ipynb
│ │ ├── l05c01_dogs_vs_cats_without_augmentation.ipynb
│ │ ├── l05c02_dogs_vs_cats_with_augmentation.ipynb
│ │ ├── l05c03_exercise_flowers_with_data_augmentation.ipynb
│ │ ├── l05c04_exercise_flowers_with_data_augmentation_solution.ipynb
│ │ ├── l06c01_tensorflow_hub_and_transfer_learning.ipynb
│ │ ├── l06c02_exercise_flowers_with_transfer_learning.ipynb
│ │ ├── l06c03_exercise_flowers_with_transfer_learning_solution.ipynb
│ │ ├── l07c01_saving_and_loading_models.ipynb
│ │ ├── l08c01_common_patterns.ipynb
│ │ ├── l08c02_naive_forecasting.ipynb
│ │ ├── l08c03_moving_average.ipynb
│ │ ├── l08c04_time_windows.ipynb
│ │ ├── l08c05_forecasting_with_machine_learning.ipynb
│ │ ├── l08c06_forecasting_with_rnn.ipynb
│ │ ├── l08c07_forecasting_with_stateful_rnn.ipynb
│ │ ├── l08c08_forecasting_with_lstm.ipynb
│ │ ├── l08c09_forecasting_with_cnn.ipynb
│ │ ├── l09c01_nlp_turn_words_into_tokens.ipynb
│ │ ├── l09c02_nlp_padding.ipynb
│ │ ├── l09c03_nlp_prepare_larger_text_corpus.ipynb
│ │ ├── l09c04_nlp_embeddings_and_sentiment.ipynb
│ │ ├── l09c05_nlp_tweaking_the_model.ipynb
│ │ ├── l09c06_nlp_subwords.ipynb
│ │ ├── l10c01_nlp_lstms_with_reviews_subwords_dataset.ipynb
│ │ ├── l10c02_nlp_multiple_models_for_predicting_sentiment.ipynb
│ │ ├── l10c03_nlp_constructing_text_generation_model.ipynb
│ │ └── l10c04_nlp_optimizing_the_text_generation_model.ipynb
│ └── udacity_intro_to_tensorflow_lite/
│ ├── tflite_c01_linear_regression.ipynb
│ ├── tflite_c02_transfer_learning.ipynb
│ ├── tflite_c03_exercise_convert_model_to_tflite.ipynb
│ ├── tflite_c04_exercise_convert_model_to_tflite_solution.ipynb
│ ├── tflite_c05_exercise_rock_paper_scissors.ipynb
│ └── tflite_c06_exercise_rock_paper_scissors_solution.ipynb
├── lite/
│ ├── .gitignore
│ ├── README.md
│ ├── codelabs/
│ │ ├── digit_classifier/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── finish/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ │ └── lite/
│ │ │ │ │ │ │ └── codelabs/
│ │ │ │ │ │ │ └── digitclassifier/
│ │ │ │ │ │ │ ├── DigitClassifier.kt
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ │ ├── layout/
│ │ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── gradlew
│ │ │ │ │ ├── gradlew.bat
│ │ │ │ │ └── settings.gradle
│ │ │ │ └── start/
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── codelabs/
│ │ │ │ │ │ └── digitclassifier/
│ │ │ │ │ │ ├── DigitClassifier.kt
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── step2_train_ml_model.ipynb
│ │ │ └── step7_improve_accuracy.ipynb
│ │ └── flower_classification/
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── finish/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── ClassifierTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ │ ├── CameraConnectionFragment.java
│ │ │ │ │ │ ├── ClassifierActivity.java
│ │ │ │ │ │ ├── LegacyCameraConnectionFragment.java
│ │ │ │ │ │ ├── customview/
│ │ │ │ │ │ │ ├── AutoFitTextureView.java
│ │ │ │ │ │ │ ├── OverlayView.java
│ │ │ │ │ │ │ ├── RecognitionScoreView.java
│ │ │ │ │ │ │ └── ResultsView.java
│ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ ├── BorderedText.java
│ │ │ │ │ │ │ ├── ImageUtils.java
│ │ │ │ │ │ │ └── Logger.java
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ ├── Classifier.java
│ │ │ │ │ │ └── ClassifierFloatMobileNet.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ │ ├── ic_baseline_remove.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── rectangle.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_ic_activity_camera.xml
│ │ │ │ │ │ ├── tfe_ic_camera_connection_fragment.xml
│ │ │ │ │ │ └── tfe_ic_layout_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── start/
│ │ │ ├── .gitignore
│ │ │ ├── app/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── classification/
│ │ │ │ │ └── ClassifierTest.java
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── classification/
│ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ ├── CameraConnectionFragment.java
│ │ │ │ │ ├── ClassifierActivity.java
│ │ │ │ │ ├── LegacyCameraConnectionFragment.java
│ │ │ │ │ ├── customview/
│ │ │ │ │ │ ├── AutoFitTextureView.java
│ │ │ │ │ │ ├── OverlayView.java
│ │ │ │ │ │ ├── RecognitionScoreView.java
│ │ │ │ │ │ └── ResultsView.java
│ │ │ │ │ ├── env/
│ │ │ │ │ │ ├── BorderedText.java
│ │ │ │ │ │ ├── ImageUtils.java
│ │ │ │ │ │ └── Logger.java
│ │ │ │ │ └── tflite/
│ │ │ │ │ ├── Classifier.java
│ │ │ │ │ └── ClassifierFloatMobileNet.java
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ ├── ic_baseline_remove.xml
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── rectangle.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── tfe_ic_activity_camera.xml
│ │ │ │ │ ├── tfe_ic_camera_connection_fragment.xml
│ │ │ │ │ └── tfe_ic_layout_bottom_sheet.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ └── ml/
│ │ └── Flower_Classification_with_TFLite_Model_Maker.ipynb
│ ├── examples/
│ │ ├── acceleration_service/
│ │ │ └── android_play_services/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── accelerationservice/
│ │ │ │ │ ├── CustomValidationTest.java
│ │ │ │ │ └── NoopLogger.java
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── accelerationservice/
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── logger/
│ │ │ │ │ │ ├── Logger.java
│ │ │ │ │ │ └── TextViewLogger.java
│ │ │ │ │ ├── model/
│ │ │ │ │ │ ├── AssetModel.java
│ │ │ │ │ │ ├── AssetModelFactory.java
│ │ │ │ │ │ ├── MobileNetV1.java
│ │ │ │ │ │ └── PlainAddition.java
│ │ │ │ │ └── validator/
│ │ │ │ │ └── MeanSquaredErrorValidator.java
│ │ │ │ └── res/
│ │ │ │ ├── layout/
│ │ │ │ │ └── activity_main.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── proguard.pgcfg
│ │ │ └── settings.gradle
│ │ ├── audio_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── audio/
│ │ │ │ │ │ ├── AudioClassificationHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── fragments/
│ │ │ │ │ │ │ ├── AudioFragment.kt
│ │ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ └── ProbabilitiesAdapter.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── controls_bottom_sheet.xml
│ │ │ │ │ │ ├── fragment_audio.xml
│ │ │ │ │ │ └── item_probability.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── AudioClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AccentColor.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── icn_chevron_down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── icn_chevron_up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── HomeViewController.swift
│ │ │ │ │ ├── InferenceView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── ResultTableViewCell.swift
│ │ │ │ │ └── TFLite/
│ │ │ │ │ └── AudioClassificationHelper.swift
│ │ │ │ ├── AudioClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth.csv
│ │ │ └── utils.py
│ │ ├── bert_qa/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── bertqa/
│ │ │ │ │ │ └── BertQaHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── bertqa/
│ │ │ │ │ │ ├── BertQaHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── dataset/
│ │ │ │ │ │ │ ├── DataSet.kt
│ │ │ │ │ │ │ └── LoadDataSetClient.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── DatasetAdapter.kt
│ │ │ │ │ │ ├── DatasetFragment.kt
│ │ │ │ │ │ ├── QaAdapter.kt
│ │ │ │ │ │ └── QaFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_question_items.xml
│ │ │ │ │ │ ├── ic_ask_active.xml
│ │ │ │ │ │ ├── ic_ask_inactive.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_dataset.xml
│ │ │ │ │ │ ├── fragment_qa.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ ├── item_dataset.xml
│ │ │ │ │ │ └── item_question.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── BertQA.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── BertQACore/
│ │ │ │ ├── Constants.swift
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── DataExtension.swift
│ │ │ │ │ ├── StringExtension.swift
│ │ │ │ │ └── UnicodeScalarExtension.swift
│ │ │ │ └── Models/
│ │ │ │ ├── Dataset.swift
│ │ │ │ ├── FileLoader.swift
│ │ │ │ ├── ML/
│ │ │ │ │ ├── BertQAHandler.swift
│ │ │ │ │ ├── ContentData.swift
│ │ │ │ │ ├── InputFeatures.swift
│ │ │ │ │ └── Result.swift
│ │ │ │ └── Tokenizers/
│ │ │ │ ├── BasicTokenizer.swift
│ │ │ │ ├── FullTokenizer.swift
│ │ │ │ └── WordpieceTokenizer.swift
│ │ │ ├── BertQATests/
│ │ │ │ ├── ExtensionTest/
│ │ │ │ │ ├── StringExtensionTest.swift
│ │ │ │ │ └── UnicodeScalarExtensionTest.swift
│ │ │ │ ├── Info.plist
│ │ │ │ ├── MLTest/
│ │ │ │ │ └── BertQAHandlerTest.swift
│ │ │ │ └── TokenizerTest/
│ │ │ │ ├── BasicTokenizerTest.swift
│ │ │ │ ├── FullTokenizerTest.swift
│ │ │ │ └── WordpieceTokenizerTest.swift
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── RunScripts/
│ │ │ │ └── download_resources.sh
│ │ │ ├── ViewInSwiftUI/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── LaunchScreen.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── KeyboardHeightObserver.swift
│ │ │ │ ├── SceneDelegate.swift
│ │ │ │ └── Views/
│ │ │ │ ├── ContentView.swift
│ │ │ │ ├── DatasetDetailView.swift
│ │ │ │ ├── DatasetListView.swift
│ │ │ │ ├── StatusView.swift
│ │ │ │ └── SuggestedQuestionsView.swift
│ │ │ └── ViewInUIKit/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj/
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Controllers/
│ │ │ │ ├── DataSetDetailViewController.swift
│ │ │ │ ├── DataSetsTableViewController.swift
│ │ │ │ ├── OptionTableViewController.swift
│ │ │ │ └── OptionViewController.swift
│ │ │ ├── Info.plist
│ │ │ └── Views/
│ │ │ ├── ControlPanelView.swift
│ │ │ ├── DataSetTitleCell.swift
│ │ │ └── SuggestedQuestionButton.swift
│ │ ├── classification_by_retrieval/
│ │ │ ├── .bazelrc
│ │ │ ├── .bazelversion
│ │ │ ├── README.md
│ │ │ ├── WORKSPACE
│ │ │ ├── ios/
│ │ │ │ ├── BUILD
│ │ │ │ ├── ImageClassifierBuilder/
│ │ │ │ │ ├── Album.swift
│ │ │ │ │ ├── AlbumSelector.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── CameraView.swift
│ │ │ │ │ ├── CameraViewController.swift
│ │ │ │ │ ├── Classifier.h
│ │ │ │ │ ├── Classifier.mm
│ │ │ │ │ ├── Field.swift
│ │ │ │ │ ├── FileManager+Additions.swift
│ │ │ │ │ ├── ImageClassifierBuilderApp.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model.swift
│ │ │ │ │ ├── ModelCreationView.swift
│ │ │ │ │ ├── ModelData.swift
│ │ │ │ │ ├── ModelInfoView.swift
│ │ │ │ │ ├── ModelList.swift
│ │ │ │ │ ├── ModelMetadata.swift
│ │ │ │ │ ├── ModelTrainer.swift
│ │ │ │ │ ├── ModelTrainerView.swift
│ │ │ │ │ ├── ModelTrainingUtils.h
│ │ │ │ │ ├── ModelTrainingUtils.mm
│ │ │ │ │ ├── ModelVisualizer.swift
│ │ │ │ │ ├── NSData+PixelBuffer.h
│ │ │ │ │ ├── NSData+PixelBuffer.m
│ │ │ │ │ ├── NSString+AbseilStringView.h
│ │ │ │ │ ├── NSString+AbseilStringView.mm
│ │ │ │ │ ├── OnBoardingView.swift
│ │ │ │ │ ├── RuntimeError.swift
│ │ │ │ │ ├── ShareSheet.swift
│ │ │ │ │ ├── String+Identifiable.swift
│ │ │ │ │ ├── UIImage+CoreVideo.h
│ │ │ │ │ ├── UIImage+CoreVideo.mm
│ │ │ │ │ ├── UINavigationController+Additions.swift
│ │ │ │ │ └── VisualEffectView.swift
│ │ │ │ └── README.md
│ │ │ └── lib/
│ │ │ ├── BUILD
│ │ │ ├── labeled_image_helper.cc
│ │ │ ├── labeled_image_helper.h
│ │ │ ├── model_builder.cc
│ │ │ ├── model_builder.h
│ │ │ ├── tflite_builder.cc
│ │ │ ├── tflite_builder.h
│ │ │ ├── tflite_cbr_builder.cc
│ │ │ └── tflite_cbr_builder.h
│ │ ├── digit_classifier/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── digitclassification/
│ │ │ │ │ │ └── DigitClassificationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── digitclassification/
│ │ │ │ │ │ ├── DigitClassifierHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ └── DigitCanvasFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_digit_canvas.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── DigitClassifier/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── DigitClassifier.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLiteExtensions.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── DigitClassifier.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ └── README.md
│ │ │ └── ml/
│ │ │ └── mnist_tflite.ipynb
│ │ ├── generative_ai/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle.kts
│ │ │ │ ├── download.gradle
│ │ │ │ ├── libs/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── build_aar/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── build_aar.sh
│ │ │ │ │ └── tftext-2.12.patch
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── tensorflowdemo/
│ │ │ │ │ │ ├── DemoApplication.kt
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ └── autocomplete/
│ │ │ │ │ │ │ └── AutoCompleteService.kt
│ │ │ │ │ │ ├── di/
│ │ │ │ │ │ │ ├── appModule.kt
│ │ │ │ │ │ │ └── viewmodelModule.kt
│ │ │ │ │ │ ├── ui/
│ │ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── HeaderBar.kt
│ │ │ │ │ │ │ ├── screens/
│ │ │ │ │ │ │ │ └── autocomplete/
│ │ │ │ │ │ │ │ ├── AutoCompleteScreen.kt
│ │ │ │ │ │ │ │ ├── AutoCompleteViewModel.kt
│ │ │ │ │ │ │ │ └── components/
│ │ │ │ │ │ │ │ ├── AutoCompleteInfo.kt
│ │ │ │ │ │ │ │ ├── AutoCompleteTextField.kt
│ │ │ │ │ │ │ │ ├── TextControlBar.kt
│ │ │ │ │ │ │ │ └── WindowSizeSelection.kt
│ │ │ │ │ │ │ └── theme/
│ │ │ │ │ │ │ ├── Color.kt
│ │ │ │ │ │ │ ├── Shape.kt
│ │ │ │ │ │ │ ├── Theme.kt
│ │ │ │ │ │ │ └── Type.kt
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── StringExt.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── header_background.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── values/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── themes.xml
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── backup_rules.xml
│ │ │ │ │ └── data_extraction_rules.xml
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── google/
│ │ │ │ └── tensorflowdemo/
│ │ │ │ └── util/
│ │ │ │ └── StringExtKtTest.kt
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle/
│ │ │ │ └── libs.versions.toml
│ │ │ ├── gradle.properties
│ │ │ ├── how-to-build.md
│ │ │ ├── ml/
│ │ │ │ └── README.md
│ │ │ └── settings.gradle.kts
│ │ ├── gesture_classification/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── adding_metadata_to_tflite_model_colab_notebook.ipynb
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── gestureclassification/
│ │ │ │ │ │ └── GestureClassificationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── gestureclassification/
│ │ │ │ │ │ ├── GestureClassifierHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GestureClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── left.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── left_click.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── right.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── right_click.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── scroll_down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── scroll_up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── selection_base.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── selection_base_default.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Cells/
│ │ │ │ │ │ ├── GestureCollectionViewCell.swift
│ │ │ │ │ │ └── InfoCell.swift
│ │ │ │ │ ├── Extension/
│ │ │ │ │ │ └── StringExtension.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── display_labels.txt
│ │ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ │ └── ModelDataHandler.swift
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── CurvedView.swift
│ │ │ │ ├── GestureClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_model.sh
│ │ │ ├── ml/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ └── tensorflowjs_to_tflite_colab_notebook.ipynb
│ │ │ └── web/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── controller_dataset.js
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── style.css
│ │ │ ├── ui.js
│ │ │ └── webcam.js
│ │ ├── image_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ └── ImageClassificationTest.kt
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ │ └── lite/
│ │ │ │ │ │ │ └── examples/
│ │ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ │ ├── ImageClassifierHelper.kt
│ │ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── color/
│ │ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ │ ├── layout/
│ │ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ │ ├── navigation/
│ │ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── dimens.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── test/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── imageclassification/
│ │ │ │ │ └── ExampleUnitTest.kt
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_java/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ └── ImageClassificationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ ├── ImageClassifierHelper.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.java
│ │ │ │ │ │ ├── ClassificationResultAdapter.java
│ │ │ │ │ │ └── PermissionsFragment.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_play_services/
│ │ │ │ ├── .google/
│ │ │ │ │ └── packaging.yaml
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── InstrumentationTest.kt
│ │ │ │ │ ├── androidTestJava/
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── TestUtil.kt
│ │ │ │ │ ├── androidTestKotlin/
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── TestUtil.kt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ │ └── ImageClassificationHelper.java
│ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ ├── CameraActivity.kt
│ │ │ │ │ │ └── ImageClassificationHelper.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── labels_without_background.txt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_shutter.xml
│ │ │ │ │ │ ├── ic_shutter_focused.xml
│ │ │ │ │ │ ├── ic_shutter_normal.xml
│ │ │ │ │ │ ├── ic_shutter_pressed.xml
│ │ │ │ │ │ └── shape_rectangle.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_camera.xml
│ │ │ │ │ ├── layout-land/
│ │ │ │ │ │ └── activity_camera.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ImageClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── darkOrLight.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Storyboards/
│ │ │ │ │ │ └── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ └── ImageClassificationHelper.swift
│ │ │ │ │ └── ViewControllers/
│ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── ImageClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ ├── metadata/
│ │ │ │ ├── README.md
│ │ │ │ ├── metadata_writer_for_image_classifier.py
│ │ │ │ └── requirements.txt
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ └── test_data/
│ │ │ └── ground_truth.csv
│ │ ├── image_segmentation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imagesegmentation/
│ │ │ │ │ │ └── ImageSegmentationHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imagesegmentation/
│ │ │ │ │ │ ├── ImageSegmentationHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── ColorLabelsAdapter.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_color_labels.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_color_labels.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ImageSegmentation/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── photo_camera.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── photo_library.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ ├── ImageSegmentationHelper.swift
│ │ │ │ │ │ └── TFLiteExtension.swift
│ │ │ │ │ ├── UIKitExtension.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── ImageSegmentation.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── ImageSegmentation.xcscheme
│ │ │ │ ├── Podfile
│ │ │ │ └── README.md
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── requirements.txt
│ │ │ ├── segment.py
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth_label.txt
│ │ │ └── utils.py
│ │ ├── model_personalization/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── modelpersonalization/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── MainViewModel.kt
│ │ │ │ │ │ ├── TransferLearningHelper.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── HelperDialog.kt
│ │ │ │ │ │ ├── PermissionsFragment.kt
│ │ │ │ │ │ └── SettingFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── btn_big_gray.xml
│ │ │ │ │ │ ├── btn_big_green.xml
│ │ │ │ │ │ ├── btn_big_yellow.xml
│ │ │ │ │ │ ├── btn_default.xml
│ │ │ │ │ │ ├── btn_default_highlight.xml
│ │ │ │ │ │ ├── ic_baseline_settings.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ ├── ic_plus.xml
│ │ │ │ │ │ ├── tf_out_line.xml
│ │ │ │ │ │ └── toggle_widget_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── fragment_setting.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── transfer_learning/
│ │ │ ├── generate_training_model.py
│ │ │ └── requirements.txt
│ │ ├── native_api/
│ │ │ └── android_play_services/
│ │ │ ├── c_api/
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ └── instrumentation/
│ │ │ │ │ │ ├── BasicScenarioTest.java
│ │ │ │ │ │ └── TfLiteNativeGPUAccelerationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cpp/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── com_google_samples_gms_tflite_c_TfLiteJni.cc
│ │ │ │ │ │ ├── java_interop.h
│ │ │ │ │ │ └── logging_assert.h
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── TfLiteJni.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── cc_api/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ ├── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ └── instrumentation/
│ │ │ │ │ │ ├── BasicScenarioTest.java
│ │ │ │ │ │ └── TfLiteNativeGPUAccelerationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cpp/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── Modules/
│ │ │ │ │ │ │ └── Findtflite_cc_api.cmake
│ │ │ │ │ │ ├── com_google_samples_gms_tflite_cc_TfLiteJni.cc
│ │ │ │ │ │ ├── java_interop.h
│ │ │ │ │ │ └── logging_assert.h
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── cc/
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── TfLiteJni.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ └── tflite-java-extract-cpp-sdk.gradle
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── object_detection/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ └── TFObjectDetectionTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ObjectDetectorHelper.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── info_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_play_services/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ └── TFObjectDetectionTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ObjectDetectorHelper.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── info_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ObjectDetection/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ └── ObjectDetectionHelper.swift
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── OverlayView.swift
│ │ │ │ ├── ObjectDetection.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── detect.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── table_results.csv
│ │ │ └── utils.py
│ │ ├── optical_character_recognition/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── ocr/
│ │ │ │ │ ├── ImageUtils.kt
│ │ │ │ │ ├── MLExecutionViewModel.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── ModelExecutionResult.kt
│ │ │ │ │ └── OCRModelExecutor.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── rounded_edge.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── tfe_is_activity_main.xml
│ │ │ │ │ └── tfe_is_bottom_sheet_layout.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── pose_estimation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ ├── image_credits.txt
│ │ │ │ │ │ │ └── pose_landmark_truth.csv
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── poseestimation/
│ │ │ │ │ │ ├── ml/
│ │ │ │ │ │ │ ├── EvaluationUtils.kt
│ │ │ │ │ │ │ ├── MovenetLightningTest.kt
│ │ │ │ │ │ │ ├── MovenetMultiPoseTest.kt
│ │ │ │ │ │ │ ├── MovenetThunderTest.kt
│ │ │ │ │ │ │ ├── PoseClassifierTest.kt
│ │ │ │ │ │ │ ├── PosenetTest.kt
│ │ │ │ │ │ │ └── VisualizationTest.kt
│ │ │ │ │ │ └── tracker/
│ │ │ │ │ │ ├── BoundingBoxTrackerTest.kt
│ │ │ │ │ │ └── KeyPointsTrackerTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── poseestimation/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── VisualizationUtils.kt
│ │ │ │ │ │ ├── YuvToRgbConverter.kt
│ │ │ │ │ │ ├── camera/
│ │ │ │ │ │ │ └── CameraSource.kt
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ ├── BodyPart.kt
│ │ │ │ │ │ │ ├── Device.kt
│ │ │ │ │ │ │ ├── KeyPoint.kt
│ │ │ │ │ │ │ ├── Person.kt
│ │ │ │ │ │ │ └── TorsoAndBodyDistance.kt
│ │ │ │ │ │ ├── ml/
│ │ │ │ │ │ │ ├── MoveNet.kt
│ │ │ │ │ │ │ ├── MoveNetMultiPose.kt
│ │ │ │ │ │ │ ├── PoseClassifier.kt
│ │ │ │ │ │ │ ├── PoseDetector.kt
│ │ │ │ │ │ │ └── PoseNet.kt
│ │ │ │ │ │ └── tracker/
│ │ │ │ │ │ ├── AbstractTracker.kt
│ │ │ │ │ │ ├── BoundingBoxTracker.kt
│ │ │ │ │ │ ├── KeyPointsTracker.kt
│ │ │ │ │ │ ├── Track.kt
│ │ │ │ │ │ └── TrackerConfig.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── rounded_edge.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ └── bottom_sheet_layout.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── themes.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── PoseEstimation/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Camera/
│ │ │ │ │ │ └── CameraFeedManager.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── ML/
│ │ │ │ │ │ ├── Extensions/
│ │ │ │ │ │ │ ├── CGSize+TFLite.swift
│ │ │ │ │ │ │ ├── CVPixelBuffer+TFLite.swift
│ │ │ │ │ │ │ └── Data+TFLite.swift
│ │ │ │ │ │ └── Models/
│ │ │ │ │ │ ├── MoveNet.swift
│ │ │ │ │ │ ├── PoseConfig.swift
│ │ │ │ │ │ ├── PoseData.swift
│ │ │ │ │ │ ├── PoseEstimator.swift
│ │ │ │ │ │ └── PoseNet.swift
│ │ │ │ │ └── UI/
│ │ │ │ │ ├── Storyboards/
│ │ │ │ │ │ └── Base.lproj/
│ │ │ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── OverlayView.swift
│ │ │ │ ├── PoseEstimation.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── PoseEstimation.xcscheme
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── data.py
│ │ │ ├── labels.txt
│ │ │ ├── ml/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── classifier.py
│ │ │ │ ├── classifier_test.py
│ │ │ │ ├── movenet.py
│ │ │ │ ├── movenet_multipose.py
│ │ │ │ ├── movenet_multipose_test.py
│ │ │ │ ├── movenet_test.py
│ │ │ │ ├── posenet.py
│ │ │ │ └── posenet_test.py
│ │ │ ├── pose_estimation.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ ├── image_credits.txt
│ │ │ │ └── pose_landmark_truth.csv
│ │ │ ├── tracker/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bounding_box_tracker.py
│ │ │ │ ├── bounding_box_tracker_test.py
│ │ │ │ ├── config.py
│ │ │ │ ├── keypoint_tracker.py
│ │ │ │ ├── keypoint_tracker_test.py
│ │ │ │ └── tracker.py
│ │ │ ├── utils.py
│ │ │ └── visualizer.py
│ │ ├── posenet/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ └── ExampleInstrumentedTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ ├── CameraActivity.kt
│ │ │ │ │ │ ├── ConfirmationDialog.kt
│ │ │ │ │ │ ├── Constants.kt
│ │ │ │ │ │ ├── ImageUtils.kt
│ │ │ │ │ │ ├── PosenetActivity.kt
│ │ │ │ │ │ └── TestActivity.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_pn_activity_camera.xml
│ │ │ │ │ │ ├── tfe_pn_activity_posenet.xml
│ │ │ │ │ │ └── tfe_pn_activity_test.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ ├── posenet/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ └── ExampleInstrumentedTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── posenet/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── Posenet.kt
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Podfile
│ │ │ ├── PoseNet/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Camera Feed/
│ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ └── PreviewView.swift
│ │ │ │ ├── Cells/
│ │ │ │ │ └── InfoCell.swift
│ │ │ │ ├── Constants.swift
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── CGSizeExtension.swift
│ │ │ │ │ ├── CVPixelBufferExtension.swift
│ │ │ │ │ └── TFLiteExtension.swift
│ │ │ │ ├── Info.plist
│ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ └── ModelDataHandler.swift
│ │ │ │ ├── Storyboards/
│ │ │ │ │ └── Base.lproj/
│ │ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── ViewControllers/
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── Views/
│ │ │ │ └── OverlayView.swift
│ │ │ ├── PoseNet.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── README.md
│ │ │ └── RunScripts/
│ │ │ └── download_models.sh
│ │ ├── recommendation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── config.json
│ │ │ │ │ │ ├── config_cnn_i10o100.json
│ │ │ │ │ │ ├── config_rnn_i10o100.json
│ │ │ │ │ │ ├── movie_genre_vocab.txt
│ │ │ │ │ │ └── sorted_movie_vocab.json
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── recommendation/
│ │ │ │ │ │ ├── Config.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ ├── MovieFragment.java
│ │ │ │ │ │ ├── MovieRecyclerViewAdapter.java
│ │ │ │ │ │ ├── RecommendationClient.java
│ │ │ │ │ │ ├── RecommendationFragment.java
│ │ │ │ │ │ ├── RecommendationRecyclerViewAdapter.java
│ │ │ │ │ │ └── data/
│ │ │ │ │ │ ├── FileUtil.java
│ │ │ │ │ │ └── MovieItem.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_re_activity_main.xml
│ │ │ │ │ │ ├── tfe_re_fragment_recommendation.xml
│ │ │ │ │ │ ├── tfe_re_fragment_recommendation_list.xml
│ │ │ │ │ │ ├── tfe_re_fragment_selection.xml
│ │ │ │ │ │ └── tfe_re_fragment_selection_list.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── configs/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── input-config.proto
│ │ │ │ ├── input_config_generated_pb2.py
│ │ │ │ ├── model_config.py
│ │ │ │ └── sample_input_config.pbtxt
│ │ │ ├── data/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── example_generation_movielens.py
│ │ │ │ └── example_generation_movielens_test.py
│ │ │ ├── model/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── context_encoder.py
│ │ │ │ ├── context_encoder_test.py
│ │ │ │ ├── dotproduct_similarity.py
│ │ │ │ ├── dotproduct_similarity_test.py
│ │ │ │ ├── input_pipeline.py
│ │ │ │ ├── input_pipeline_test.py
│ │ │ │ ├── label_encoder.py
│ │ │ │ ├── label_encoder_test.py
│ │ │ │ ├── losses.py
│ │ │ │ ├── losses_test.py
│ │ │ │ ├── metrics.py
│ │ │ │ ├── metrics_test.py
│ │ │ │ ├── recommendation_model.py
│ │ │ │ ├── recommendation_model_launcher.py
│ │ │ │ ├── recommendation_model_launcher_test.py
│ │ │ │ ├── recommendation_model_test.py
│ │ │ │ └── utils.py
│ │ │ ├── ondevice_recommendation.ipynb
│ │ │ └── requirements.txt
│ │ ├── reinforcement_learning/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── reinforcementlearning/
│ │ │ │ │ │ ├── BoardCellAdapter.java
│ │ │ │ │ │ ├── BoardCellStatus.java
│ │ │ │ │ │ ├── Constants.java
│ │ │ │ │ │ ├── HiddenBoardCellStatus.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ ├── PlaneStrikeAgent.java
│ │ │ │ │ │ ├── RLAgent.java
│ │ │ │ │ │ └── RLAgentFromTFAgents.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── README.md
│ │ │ ├── common.py
│ │ │ ├── tf_agents/
│ │ │ │ ├── planestrike_py_environment.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── training_tf_agents.py
│ │ │ └── tf_and_jax/
│ │ │ ├── gym_planestrike/
│ │ │ │ ├── gym_planestrike/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── envs/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── planestrike.py
│ │ │ │ └── setup.py
│ │ │ ├── requirements.txt
│ │ │ ├── training_jax.py
│ │ │ └── training_tf.py
│ │ ├── smart_reply/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── libs/
│ │ │ │ │ ├── .bazelrc
│ │ │ │ │ ├── .bazelversion
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── WORKSPACE
│ │ │ │ │ └── cc/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── DummyManifest.xml
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ └── BUILD
│ │ │ │ │ ├── ops/
│ │ │ │ │ │ ├── extract_feature.cc
│ │ │ │ │ │ ├── extract_feature_test.cc
│ │ │ │ │ │ ├── normalize.cc
│ │ │ │ │ │ ├── normalize_test.cc
│ │ │ │ │ │ ├── predict.cc
│ │ │ │ │ │ └── predict_test.cc
│ │ │ │ │ ├── predictor.cc
│ │ │ │ │ ├── predictor.h
│ │ │ │ │ ├── predictor_test.cc
│ │ │ │ │ ├── smartreply_jni.cc
│ │ │ │ │ └── testdata/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── smartreply_samples.tsv
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── backoff_response.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── smartreply/
│ │ │ │ │ ├── AssetsUtil.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── SmartReply.java
│ │ │ │ │ └── SmartReplyClient.java
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ └── tfe_sr_main_activity.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── how-to-build.md
│ │ │ └── settings.gradle
│ │ ├── sound_classification/
│ │ │ ├── README.md
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ ├── RunScripts/
│ │ │ │ │ └── download_models.sh
│ │ │ │ ├── SoundClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── tfl2_logo_dark.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AudioInputManager.swift
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── ProbabilityTableViewCell.swift
│ │ │ │ │ ├── SoundClassifier.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── SoundClassification.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth.csv
│ │ │ └── utils.py
│ │ ├── speech_commands/
│ │ │ ├── README.md
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ ├── RunScripts/
│ │ │ │ │ └── download_models.sh
│ │ │ │ ├── SpeechCommands/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── base.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── border_color.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── inner_shadow_color.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AudioInputManager/
│ │ │ │ │ │ └── AudioInputManager.swift
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Cells/
│ │ │ │ │ │ ├── InfoCell.swift
│ │ │ │ │ │ └── WordCell.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── .gitignore
│ │ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ │ ├── ModelDataHandler.swift
│ │ │ │ │ │ └── RecognizeCommands.swift
│ │ │ │ │ └── ViewControllers/
│ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── SpeechCommands.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── ml/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── callbacks.py
│ │ │ ├── classes.py
│ │ │ ├── download.py
│ │ │ ├── export/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── convert_keras_lite.py
│ │ │ │ ├── convert_keras_to_quantized.py
│ │ │ │ └── convert_tensorflow_lite.sh
│ │ │ ├── generator.py
│ │ │ ├── model.py
│ │ │ ├── requirements.txt
│ │ │ ├── train.py
│ │ │ └── utils.py
│ │ ├── speech_recognition/
│ │ │ └── android/
│ │ │ ├── app/
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ └── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradlew
│ │ │ └── gradlew.bat
│ │ ├── style_transfer/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── styletransfer/
│ │ │ │ │ │ └── StyleTransferHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── styletransfer/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── MainViewModel.kt
│ │ │ │ │ │ ├── SingleLiveEvent.kt
│ │ │ │ │ │ ├── StyleTransferHelper.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── PermissionsFragment.kt
│ │ │ │ │ │ ├── StyleAdapter.kt
│ │ │ │ │ │ └── TransformationFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_item_style.xml
│ │ │ │ │ │ ├── bg_item_style_selected.xml
│ │ │ │ │ │ ├── decoration_divider.xml
│ │ │ │ │ │ ├── ic_baseline_camera_enhance.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── fragment_transformation.xml
│ │ │ │ │ │ └── item_style.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── style.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── StyleTransfer/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── photo_camera.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── photo_library.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style0.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style1.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style10.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style11.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style12.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style13.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style14.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style15.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style16.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style17.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style18.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style19.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style2.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style20.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style21.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style22.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style23.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style24.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style25.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style3.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style4.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style5.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style6.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style7.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style8.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── style9.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── StylePickerViewController.swift
│ │ │ │ ├── StyleTransferer.swift
│ │ │ │ ├── TFLiteExtension.swift
│ │ │ │ ├── UIKitExtension.swift
│ │ │ │ └── ViewController.swift
│ │ │ ├── StyleTransfer.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── StyleTransfer.xcscheme
│ │ │ └── download_tflite_models.sh
│ │ ├── super_resolution/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cc/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── SuperResolution.cpp
│ │ │ │ │ │ ├── SuperResolution.h
│ │ │ │ │ │ └── SuperResolution_jni.cpp
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── superresolution/
│ │ │ │ │ │ ├── AssetsUtil.java
│ │ │ │ │ │ └── MainActivity.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── rounded_edge.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ └── bottom_sheet_layout.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ └── super_resolution.ipynb
│ │ ├── text_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── textclassification/
│ │ │ │ │ │ └── TextClassifierInstrumentationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── textclassification/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ResultsAdapter.kt
│ │ │ │ │ │ └── TextClassificationHelper.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── dimens.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── themes.xml
│ │ │ │ │ └── values-night/
│ │ │ │ │ └── themes.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── TextClassification/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ └── ViewController.swift
│ │ │ └── TextClassification.xcodeproj/
│ │ │ └── project.pbxproj
│ │ ├── text_searcher/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── textsearcher/
│ │ │ │ │ └── TextSearcherClientTest.kt
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── textsearcher/
│ │ │ │ │ ├── tflite/
│ │ │ │ │ │ └── TextSearcherClient.kt
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── TextSearcherActivity.kt
│ │ │ │ │ ├── TextSearcherResultActivity.kt
│ │ │ │ │ └── WebviewActivity.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── ic_baseline_close_48.xml
│ │ │ │ │ ├── ic_baseline_search_48.xml
│ │ │ │ │ ├── ic_baseline_web_48.xml
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── activity_text_searcher.xml
│ │ │ │ │ ├── activity_text_searcher_result.xml
│ │ │ │ │ ├── activity_webview.xml
│ │ │ │ │ ├── preset_query_item_layout.xml
│ │ │ │ │ └── searcher_result_item_layout.xml
│ │ │ │ ├── menu/
│ │ │ │ │ └── action_bar_menu.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ └── video_classification/
│ │ ├── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── videoclassification/
│ │ │ │ │ └── VideoClassifierTest.kt
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── kinetics600_label_map.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── videoclassification/
│ │ │ │ │ ├── CalculateUtils.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── ml/
│ │ │ │ │ └── VideoClassifier.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bg_bottom_sheet.xml
│ │ │ │ │ ├── bg_rectangle.xml
│ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ └── ic_baseline_remove.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ └── layout_bottom_sheet.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ └── settings.gradle
│ │ └── raspberry_pi/
│ │ ├── README.md
│ │ ├── classify.py
│ │ ├── kinetics600_label_map.txt
│ │ ├── requirements.txt
│ │ ├── setup.sh
│ │ ├── video_classifier.py
│ │ └── video_classifier_test.py
│ └── tools/
│ ├── build_all_android.sh
│ ├── build_all_ios.sh
│ ├── build_android_app.sh
│ ├── build_ios_app.sh
│ ├── build_model_maker_api_docs.py
│ ├── shared/
│ │ └── android/
│ │ ├── app/
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ └── mipmap-anydpi-v26/
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ └── gradlew.bat
│ └── test_pip_setup.sh
├── setup.py
├── templates/
│ └── notebook.ipynb
└── tensorflow_examples/
├── __init__.py
├── lite/
│ ├── __init__.py
│ └── model_maker/
│ ├── README.md
│ ├── RELEASE.md
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ └── cli_test.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── api/
│ │ │ ├── __init__.py
│ │ │ ├── api_gen.py
│ │ │ ├── api_gen_test.py
│ │ │ ├── api_util.py
│ │ │ ├── api_util_test.py
│ │ │ ├── deprecated_api.py
│ │ │ ├── golden_api.json
│ │ │ ├── golden_api_doc.py
│ │ │ └── include.py
│ │ ├── compat.py
│ │ ├── data_util/
│ │ │ ├── __init__.py
│ │ │ ├── audio_dataloader.py
│ │ │ ├── audio_dataloader_test.py
│ │ │ ├── data_util.py
│ │ │ ├── dataloader.py
│ │ │ ├── dataloader_test.py
│ │ │ ├── image_dataloader.py
│ │ │ ├── image_dataloader_test.py
│ │ │ ├── image_searcher_dataloader.py
│ │ │ ├── metadata_loader.py
│ │ │ ├── metadata_loader_test.py
│ │ │ ├── object_detector_dataloader.py
│ │ │ ├── object_detector_dataloader_test.py
│ │ │ ├── object_detector_dataloader_util.py
│ │ │ ├── object_detector_dataloader_util_test.py
│ │ │ ├── recommendation_config.py
│ │ │ ├── recommendation_dataloader.py
│ │ │ ├── recommendation_dataloader_test.py
│ │ │ ├── recommendation_testutil.py
│ │ │ ├── searcher_dataloader.py
│ │ │ ├── searcher_dataloader_test.py
│ │ │ ├── testdata/
│ │ │ │ ├── annotations/
│ │ │ │ │ └── 2012_12.xml
│ │ │ │ ├── annotations.json
│ │ │ │ ├── mobilenet_v2_035_96_embedder_with_metadata.tflite
│ │ │ │ ├── movies.csv
│ │ │ │ ├── object_detection_csv/
│ │ │ │ │ ├── json_files/
│ │ │ │ │ │ ├── test_annotations.json
│ │ │ │ │ │ └── train_annotations.json
│ │ │ │ │ └── salads_ml_use.csv
│ │ │ │ ├── regex_one_embedding_with_metadata.tflite
│ │ │ │ ├── squad_testdata/
│ │ │ │ │ ├── dev-v1.1.json
│ │ │ │ │ ├── dev-v2.0.json
│ │ │ │ │ ├── train-v1.1.json
│ │ │ │ │ └── train-v2.0.json
│ │ │ │ └── trips.csv
│ │ │ ├── text_dataloader.py
│ │ │ ├── text_dataloader_test.py
│ │ │ ├── text_searcher_dataloader.py
│ │ │ └── text_searcher_dataloader_test.py
│ │ ├── export_format.py
│ │ ├── file_util.py
│ │ ├── optimization/
│ │ │ ├── __init__.py
│ │ │ └── warmup.py
│ │ ├── task/
│ │ │ ├── __init__.py
│ │ │ ├── audio_classifier.py
│ │ │ ├── audio_classifier_test.py
│ │ │ ├── classification_model.py
│ │ │ ├── classification_model_test.py
│ │ │ ├── configs.py
│ │ │ ├── custom_model.py
│ │ │ ├── custom_model_test.py
│ │ │ ├── hub_loader.py
│ │ │ ├── hub_loader_test.py
│ │ │ ├── image_classifier.py
│ │ │ ├── image_classifier_test.py
│ │ │ ├── image_classifier_v1_test.py
│ │ │ ├── image_preprocessing.py
│ │ │ ├── image_preprocessing_test.py
│ │ │ ├── make_image_classifier.py
│ │ │ ├── metadata_writer_for_image_classifier.py
│ │ │ ├── metadata_writers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bert/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── metadata_writer_for_bert.py
│ │ │ │ │ ├── question_answerer/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── metadata_writer_for_bert_question_answerer.py
│ │ │ │ │ └── text_classifier/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── metadata_writer_for_bert_text_classifier.py
│ │ │ │ ├── metadata_writer.py
│ │ │ │ └── text_classifier/
│ │ │ │ ├── __init__.py
│ │ │ │ └── metadata_writer_for_text_classifier.py
│ │ │ ├── model_spec/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── audio_spec.py
│ │ │ │ ├── audio_spec_test.py
│ │ │ │ ├── image_spec.py
│ │ │ │ ├── model_spec_test.py
│ │ │ │ ├── object_detector_spec.py
│ │ │ │ ├── object_detector_spec_test.py
│ │ │ │ ├── recommendation_spec.py
│ │ │ │ ├── recommendation_spec_test.py
│ │ │ │ ├── testdata/
│ │ │ │ │ └── fake_effdet_lite0_hub/
│ │ │ │ │ ├── keras_metadata.pb
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ │ └── variables.index
│ │ │ │ ├── text_spec.py
│ │ │ │ ├── text_spec_test.py
│ │ │ │ └── util.py
│ │ │ ├── model_util.py
│ │ │ ├── model_util_test.py
│ │ │ ├── model_util_v1_test.py
│ │ │ ├── object_detector.py
│ │ │ ├── object_detector_test.py
│ │ │ ├── question_answer.py
│ │ │ ├── question_answer_test.py
│ │ │ ├── question_answer_v1_test.py
│ │ │ ├── recommendation.py
│ │ │ ├── recommendation_test.py
│ │ │ ├── searcher.py
│ │ │ ├── searcher_test.py
│ │ │ ├── testdata/
│ │ │ │ ├── average_word_vec_metadata.json
│ │ │ │ ├── bert_classifier_metadata.json
│ │ │ │ ├── bert_qa_metadata.json
│ │ │ │ ├── dummy_sp_text_embedder.tflite
│ │ │ │ ├── efficientdet_lite0_metadata.json
│ │ │ │ ├── efficientnet_lite0_metadata.json
│ │ │ │ ├── hub_module_v1_mini/
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ └── tfhub_module.pb
│ │ │ │ ├── hub_module_v1_mini_train/
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ ├── tfhub_module.pb
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ │ └── variables.index
│ │ │ │ ├── mobilenet_v3_small_100_224_embedder_scann.json
│ │ │ │ └── saved_model_v2_mini/
│ │ │ │ ├── saved_model.pb
│ │ │ │ └── variables/
│ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ └── variables.index
│ │ │ ├── text_classifier.py
│ │ │ ├── text_classifier_test.py
│ │ │ ├── text_classifier_v1_test.py
│ │ │ └── train_image_classifier_lib.py
│ │ ├── test_util.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── ondevice_scann_builder.py
│ │ ├── ondevice_scann_builder_test.py
│ │ ├── scann_converter.py
│ │ └── scann_converter_test.py
│ ├── demo/
│ │ ├── __init__.py
│ │ ├── audio_classification_demo.py
│ │ ├── audio_classification_demo_test.py
│ │ ├── custom_model_demo.py
│ │ ├── custom_model_demo_test.py
│ │ ├── image_classification.ipynb
│ │ ├── image_classification_demo.py
│ │ ├── image_classification_demo_test.py
│ │ ├── question_answer_demo.py
│ │ ├── recommendation_demo.py
│ │ ├── recommendation_demo_test.py
│ │ ├── text_classification.ipynb
│ │ ├── text_classification_demo.py
│ │ └── text_classification_demo_test.py
│ ├── pip_package/
│ │ ├── create_venv.sh
│ │ ├── golden_api_test.py
│ │ ├── setup.py
│ │ ├── setup_util.py
│ │ └── test_pip_package.sh
│ ├── public/
│ │ ├── __init__.py
│ │ ├── audio_classifier/
│ │ │ └── __init__.py
│ │ ├── config/
│ │ │ └── __init__.py
│ │ ├── image_classifier/
│ │ │ └── __init__.py
│ │ ├── model_spec/
│ │ │ └── __init__.py
│ │ ├── object_detector/
│ │ │ └── __init__.py
│ │ ├── question_answer/
│ │ │ └── __init__.py
│ │ ├── recommendation/
│ │ │ ├── __init__.py
│ │ │ └── spec/
│ │ │ └── __init__.py
│ │ ├── searcher/
│ │ │ └── __init__.py
│ │ └── text_classifier/
│ │ └── __init__.py
│ ├── requirements.txt
│ ├── requirements_nightly.txt
│ └── third_party/
│ ├── efficientdet/
│ │ ├── Det-AdvProp.md
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aug/
│ │ │ ├── __init__.py
│ │ │ ├── autoaugment.py
│ │ │ ├── gridmask.py
│ │ │ └── mosaic.py
│ │ ├── backbone/
│ │ │ ├── __init__.py
│ │ │ ├── autoaugment.py
│ │ │ ├── backbone_factory.py
│ │ │ ├── efficientnet_builder.py
│ │ │ ├── efficientnet_lite_builder.py
│ │ │ ├── efficientnet_model.py
│ │ │ ├── preprocessing.py
│ │ │ └── train_backbone.py
│ │ ├── coco_metric.py
│ │ ├── dataloader.py
│ │ ├── dataset/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── create_coco_tfrecord.py
│ │ │ ├── create_pascal_tfrecord.py
│ │ │ ├── inspect_tfrecords.py
│ │ │ ├── label_map_util.py
│ │ │ └── tfrecord_util.py
│ │ ├── det_advprop_tutorial.ipynb
│ │ ├── det_model_fn.py
│ │ ├── efficientdet_arch.py
│ │ ├── hparams_config.py
│ │ ├── inference.py
│ │ ├── install_deps.sh
│ │ ├── iou_utils.py
│ │ ├── keras/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── anchors.py
│ │ │ ├── efficientdet_keras.py
│ │ │ ├── eval.py
│ │ │ ├── eval_tflite.py
│ │ │ ├── fpn_configs.py
│ │ │ ├── infer.py
│ │ │ ├── infer_lib.py
│ │ │ ├── inspector.py
│ │ │ ├── label_util.py
│ │ │ ├── postprocess.py
│ │ │ ├── segmentation.py
│ │ │ ├── tfmot.py
│ │ │ ├── train.py
│ │ │ ├── train_lib.py
│ │ │ ├── util_keras.py
│ │ │ └── wbf.py
│ │ ├── main.py
│ │ ├── model_inspect.py
│ │ ├── nms_np.py
│ │ ├── object_detection/
│ │ │ ├── __init__.py
│ │ │ ├── argmax_matcher.py
│ │ │ ├── box_coder.py
│ │ │ ├── box_list.py
│ │ │ ├── faster_rcnn_box_coder.py
│ │ │ ├── matcher.py
│ │ │ ├── preprocessor.py
│ │ │ ├── region_similarity_calculator.py
│ │ │ ├── shape_utils.py
│ │ │ ├── target_assigner.py
│ │ │ └── tf_example_decoder.py
│ │ ├── requirements.txt
│ │ ├── run_tflite.py
│ │ ├── tensorrt.py
│ │ ├── tutorial.ipynb
│ │ ├── utils.py
│ │ └── visualize/
│ │ ├── __init__.py
│ │ ├── shape_utils.py
│ │ ├── standard_fields.py
│ │ ├── static_shape.py
│ │ └── vis_utils.py
│ └── recommendation/
│ └── ml/
│ ├── configs/
│ │ ├── __init__.py
│ │ ├── input-config.proto
│ │ ├── input_config_pb2.py
│ │ ├── model_config.py
│ │ └── sample_input_config.pbtxt
│ ├── data/
│ │ ├── __init__.py
│ │ ├── example_generation_movielens.py
│ │ └── example_generation_movielens_test.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── context_encoder.py
│ │ ├── context_encoder_test.py
│ │ ├── dotproduct_similarity.py
│ │ ├── dotproduct_similarity_test.py
│ │ ├── input_pipeline.py
│ │ ├── input_pipeline_test.py
│ │ ├── label_encoder.py
│ │ ├── label_encoder_test.py
│ │ ├── losses.py
│ │ ├── losses_test.py
│ │ ├── metrics.py
│ │ ├── metrics_test.py
│ │ ├── recommendation_model.py
│ │ ├── recommendation_model_launcher.py
│ │ ├── recommendation_model_launcher_test.py
│ │ ├── recommendation_model_test.py
│ │ └── utils.py
│ ├── ondevice_recommendation.ipynb
│ └── requirements.txt
├── models/
│ ├── __init__.py
│ ├── dcgan/
│ │ ├── __init__.py
│ │ ├── dcgan.py
│ │ └── dcgan_test.py
│ ├── densenet/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── densenet.py
│ │ ├── densenet_distributed_test.py
│ │ ├── densenet_test.py
│ │ ├── distributed_train.py
│ │ ├── train.py
│ │ └── utils.py
│ ├── nmt_with_attention/
│ │ ├── __init__.py
│ │ ├── distributed_test.py
│ │ ├── distributed_train.py
│ │ ├── nmt.py
│ │ ├── nmt_test.py
│ │ ├── train.py
│ │ └── utils.py
│ └── pix2pix/
│ ├── __init__.py
│ ├── data_download.py
│ ├── pix2pix.py
│ └── pix2pix_test.py
└── profiling/
├── imagenet_preprocessing_ineffecient_input_pipeline.py
└── resnet_model.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
**/*.pyc
**/.DS_Store
**/.idea
**/.ipynb_checkpoints
================================================
FILE: AUTHORS
================================================
# This is the official list of TensorFlow authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.
# Names should be added to this file as:
# Name or Organization <email address>
# The email address is not required for organizations.
Google Inc.
================================================
FILE: CODEOWNERS
================================================
# https://help.github.com/articles/about-codeowners/
# Last matching pattern takes preecedence.
# Default owners for everything in repo.
* @tensorflow/docs-team
# Courses
/courses/ @josbecker @MarkDaoust
# TF Lite
/lite/ @khanhlvg @lu-wang-g @miaout17 @terryheo
/tensorflow_examples/lite/ @ziyeqinghan @khanhlvg @lu-wang-g @miaout17 @terryheo
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
You don't need to be a developer to make a significant
impact on TensorFlow documentation and examples-—just a
[GitHub account](https://github.com/).
Questions about TensorFlow usage are best addressed on
[StackOverflow](https://stackoverflow.com/questions/tagged/tensorflow) or the
[discuss@tensorflow.org](https://groups.google.com/a/tensorflow.org/forum/#!forum/discuss)
mailing list.
To contribute to the TensorFlow code repositories, see the
[Contributing to TensorFlow](https://www.tensorflow.org/community/contribute) guide
and the
[TensorFlow contribution guidelines](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md).
## Contributor License Agreements
We love patches! To publish your changes, you must sign either the individual or
corporate Contributor License Agreement (CLA):
* If you are an individual writing original documentation or source code and
you're sure you own the intellectual property, sign an
[individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
* If you work for a company that wants to allow you to contribute your work, sign
a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
We can accept your pull requests after you sign the CLA. We can only receive
original documentation and source code from you and other people that have
signed the CLA.
# Pull requests
To contribute documentation or code, please send us a pull request. If you are new to
pull requests, read GitHub's
[Creating a pull request from a fork](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)
guide.
Notebooks can be viewed, edited, and run in
[Colab](https://colab.research.google.com/notebooks/welcome.ipynb) by passing
the GitHub path as a URL parameter. For example, open the notebook at
https://github.com/tensorflow/docs/blob/r1.11/site/en/tutorials/keras/basic_classification.ipynb
in Colab here:
https://colab.research.google.com/github/tensorflow/docs/blob/r1.11/site/en/tutorials/keras/basic_classification.ipynb
The [Open in Colab](https://chrome.google.com/webstore/detail/open-in-colab/iogfkhleblhcpcekbiedikdehleodpjo)
Chrome extension will automatically perform the URL substitution.
================================================
FILE: LICENSE
================================================
Copyright 2018 The TensorFlow Authors. All rights reserved.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017, The TensorFlow Authors.
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.
================================================
FILE: README.md
================================================
# TensorFlow Examples
<div align="center">
<img src="https://www.tensorflow.org/images/tf_logo_social.png" /><br /><br />
</div>
<h2>Most important links!</h2>
* [Community examples](./community)
* [Course materials](./courses/udacity_deep_learning) for the [Deep Learning](https://www.udacity.com/course/deep-learning--ud730) class on Udacity
If you are looking to learn TensorFlow, don't miss the
[core TensorFlow documentation](http://github.com/tensorflow/docs)
which is largely runnable code.
Those notebooks can be opened in Colab from
[tensorflow.org](https://tensorflow.org).
<h2>What is this repo?</h2>
This is the TensorFlow example repo. It has several classes of material:
* Showcase examples and documentation for our fantastic [TensorFlow Community](https://tensorflow.org/community)
* Provide examples mentioned on TensorFlow.org
* Publish material supporting official TensorFlow courses
* Publish supporting material for the [TensorFlow Blog](https://blog.tensorflow.org) and [TensorFlow YouTube Channel](https://youtube.com/tensorflow)
We welcome community contributions, see [CONTRIBUTING.md](CONTRIBUTING.md) and, for style help,
[Writing TensorFlow documentation](https://www.tensorflow.org/community/contribute/docs_style)
guide.
To file an issue, use the tracker in the
[tensorflow/tensorflow](https://github.com/tensorflow/tensorflow/issues/new?template=20-documentation-issue.md) repo.
## License
[Apache License 2.0](LICENSE)
================================================
FILE: __init__.py
================================================
"""tensorflow_examples is a package for examples of TensorFlow."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
================================================
FILE: courses/udacity_deep_learning/.gitignore
================================================
notMNIST_large*
notMNIST_small*
================================================
FILE: courses/udacity_deep_learning/1_notmnist.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "5hIbr52I7Z7U"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 1\n",
"------------\n",
"\n",
"The objective of this assignment is to learn about simple data curation practices, and familiarize you with some of the data we'll be reusing later.\n",
"\n",
"This notebook uses the [notMNIST](http://yaroslavvb.blogspot.com/2011/09/notmnist-dataset.html) dataset to be used with python experiments. This dataset is designed to look like the classic [MNIST](http://yann.lecun.com/exdb/mnist/) dataset, while looking a little more like real data: it's a harder task, and the data is a lot less 'clean' than MNIST."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "apJbCsBHl-2A"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"from __future__ import print_function\n",
"import imageio\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import os\n",
"import sys\n",
"import tarfile\n",
"from IPython.display import display, Image\n",
"from sklearn.linear_model import LogisticRegression\n",
"from six.moves.urllib.request import urlretrieve\n",
"from six.moves import cPickle as pickle\n",
"\n",
"# Config the matplotlib backend as plotting inline in IPython\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jNWGtZaXn-5j"
},
"source": [
"First, we'll download the dataset to our local machine. The data consists of characters rendered in a variety of fonts on a 28x28 image. The labels are limited to 'A' through 'J' (10 classes). The training set has about 500k and the testset 19000 labeled examples. Given these sizes, it should be possible to train models quickly on any machine."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "EYRJ4ICW6-da"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found and verified notMNIST_large.tar.gz\n",
"Found and verified notMNIST_small.tar.gz\n"
]
}
],
"source": [
"url = 'https://commondatastorage.googleapis.com/books1000/'\n",
"last_percent_reported = None\n",
"data_root = '.' # Change me to store data elsewhere\n",
"\n",
"def download_progress_hook(count, blockSize, totalSize):\n",
" \"\"\"A hook to report the progress of a download. This is mostly intended for users with\n",
" slow internet connections. Reports every 5% change in download progress.\n",
" \"\"\"\n",
" global last_percent_reported\n",
" percent = int(count * blockSize * 100 / totalSize)\n",
"\n",
" if last_percent_reported != percent:\n",
" if percent % 5 == 0:\n",
" sys.stdout.write(\"%s%%\" % percent)\n",
" sys.stdout.flush()\n",
" else:\n",
" sys.stdout.write(\".\")\n",
" sys.stdout.flush()\n",
" \n",
" last_percent_reported = percent\n",
" \n",
"def maybe_download(filename, expected_bytes, force=False):\n",
" \"\"\"Download a file if not present, and make sure it's the right size.\"\"\"\n",
" dest_filename = os.path.join(data_root, filename)\n",
" if force or not os.path.exists(dest_filename):\n",
" print('Attempting to download:', filename) \n",
" filename, _ = urlretrieve(url + filename, dest_filename, reporthook=download_progress_hook)\n",
" print('\\nDownload Complete!')\n",
" statinfo = os.stat(dest_filename)\n",
" if statinfo.st_size == expected_bytes:\n",
" print('Found and verified', dest_filename)\n",
" else:\n",
" raise Exception(\n",
" 'Failed to verify ' + dest_filename + '. Can you get to it with a browser?')\n",
" return dest_filename\n",
"\n",
"train_filename = maybe_download('notMNIST_large.tar.gz', 247336696)\n",
"test_filename = maybe_download('notMNIST_small.tar.gz', 8458043)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cC3p0oEyF8QT"
},
"source": [
"Extract the dataset from the compressed .tar.gz file.\n",
"This should give you a set of directories, labeled A through J."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "H8CBE-WZ8nmj"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['notMNIST_large/A', 'notMNIST_large/B', 'notMNIST_large/C', 'notMNIST_large/D', 'notMNIST_large/E', 'notMNIST_large/F', 'notMNIST_large/G', 'notMNIST_large/H', 'notMNIST_large/I', 'notMNIST_large/J']\n",
"['notMNIST_small/A', 'notMNIST_small/B', 'notMNIST_small/C', 'notMNIST_small/D', 'notMNIST_small/E', 'notMNIST_small/F', 'notMNIST_small/G', 'notMNIST_small/H', 'notMNIST_small/I', 'notMNIST_small/J']\n"
]
}
],
"source": [
"num_classes = 10\n",
"np.random.seed(133)\n",
"\n",
"def maybe_extract(filename, force=False):\n",
" root = os.path.splitext(os.path.splitext(filename)[0])[0] # remove .tar.gz\n",
" if os.path.isdir(root) and not force:\n",
" # You may override by setting force=True.\n",
" print('%s already present - Skipping extraction of %s.' % (root, filename))\n",
" else:\n",
" print('Extracting data for %s. This may take a while. Please wait.' % root)\n",
" tar = tarfile.open(filename)\n",
" sys.stdout.flush()\n",
" tar.extractall(data_root)\n",
" tar.close()\n",
" data_folders = [\n",
" os.path.join(root, d) for d in sorted(os.listdir(root))\n",
" if os.path.isdir(os.path.join(root, d))]\n",
" if len(data_folders) != num_classes:\n",
" raise Exception(\n",
" 'Expected %d folders, one per class. Found %d instead.' % (\n",
" num_classes, len(data_folders)))\n",
" print(data_folders)\n",
" return data_folders\n",
" \n",
"train_folders = maybe_extract(train_filename)\n",
"test_folders = maybe_extract(test_filename)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4riXK3IoHgx6"
},
"source": [
"---\n",
"Problem 1\n",
"---------\n",
"\n",
"Let's take a peek at some of the data to make sure it looks sensible. Each exemplar should be an image of a character A through J rendered in a different font. Display a sample of the images that we just downloaded. Hint: you can use the package IPython.display.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PBdkjESPK8tw"
},
"source": [
"Now let's load the data in a more manageable format. Since, depending on your computer setup you might not be able to fit it all in memory, we'll load each class into a separate dataset, store them on disk and curate them independently. Later we'll merge them into a single dataset of manageable size.\n",
"\n",
"We'll convert the entire dataset into a 3D array (image index, x, y) of floating point values, normalized to have approximately zero mean and standard deviation ~0.5 to make training easier down the road. \n",
"\n",
"A few images might not be readable, we'll just skip them."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "h7q0XhG3MJdf"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"notMNIST_large/A\n",
"Could not read: notMNIST_large/A/Um9tYW5hIEJvbGQucGZi.png : cannot identify image file - it's ok, skipping.\n",
"Could not read: notMNIST_large/A/RnJlaWdodERpc3BCb29rSXRhbGljLnR0Zg==.png : cannot identify image file - it's ok, skipping.\n",
"Could not read: notMNIST_large/A/SG90IE11c3RhcmQgQlROIFBvc3Rlci50dGY=.png : cannot identify image file - it's ok, skipping.\n",
"Full dataset tensor: (52909, 28, 28)\n",
"Mean: -0.12848\n",
"Standard deviation: 0.425576\n",
"notMNIST_large/B\n",
"Could not read: notMNIST_large/B/TmlraXNFRi1TZW1pQm9sZEl0YWxpYy5vdGY=.png : cannot identify image file - it's ok, skipping.\n",
"Full dataset tensor: (52911, 28, 28)\n",
"Mean: -0.00755947\n",
"Standard deviation: 0.417272\n",
"notMNIST_large/C\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: -0.142321\n",
"Standard deviation: 0.421305\n",
"notMNIST_large/D\n",
"Could not read: notMNIST_large/D/VHJhbnNpdCBCb2xkLnR0Zg==.png : cannot identify image file - it's ok, skipping.\n",
"Full dataset tensor: (52911, 28, 28)\n",
"Mean: -0.0574553\n",
"Standard deviation: 0.434072\n",
"notMNIST_large/E\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: -0.0701406\n",
"Standard deviation: 0.42882\n",
"notMNIST_large/F\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: -0.125914\n",
"Standard deviation: 0.429645\n",
"notMNIST_large/G\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: -0.0947771\n",
"Standard deviation: 0.421674\n",
"notMNIST_large/H\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: -0.0687667\n",
"Standard deviation: 0.430344\n",
"notMNIST_large/I\n",
"Full dataset tensor: (52912, 28, 28)\n",
"Mean: 0.0307405\n",
"Standard deviation: 0.449686\n",
"notMNIST_large/J\n",
"Full dataset tensor: (52911, 28, 28)\n",
"Mean: -0.153479\n",
"Standard deviation: 0.397169\n",
"notMNIST_small/A\n",
"Could not read: notMNIST_small/A/RGVtb2NyYXRpY2FCb2xkT2xkc3R5bGUgQm9sZC50dGY=.png : cannot identify image file - it's ok, skipping.\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: -0.132588\n",
"Standard deviation: 0.445923\n",
"notMNIST_small/B\n",
"Full dataset tensor: (1873, 28, 28)\n",
"Mean: 0.00535619\n",
"Standard deviation: 0.457054\n",
"notMNIST_small/C\n",
"Full dataset tensor: (1873, 28, 28)\n",
"Mean: -0.141489\n",
"Standard deviation: 0.441056\n",
"notMNIST_small/D\n",
"Full dataset tensor: (1873, 28, 28)\n",
"Mean: -0.0492094\n",
"Standard deviation: 0.460477\n",
"notMNIST_small/E\n",
"Full dataset tensor: (1873, 28, 28)\n",
"Mean: -0.0598952\n",
"Standard deviation: 0.456146\n",
"notMNIST_small/F\n",
"Could not read: notMNIST_small/F/Q3Jvc3NvdmVyIEJvbGRPYmxpcXVlLnR0Zg==.png : cannot identify image file - it's ok, skipping.\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: -0.118148\n",
"Standard deviation: 0.451134\n",
"notMNIST_small/G\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: -0.092519\n",
"Standard deviation: 0.448468\n",
"notMNIST_small/H\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: -0.0586729\n",
"Standard deviation: 0.457387\n",
"notMNIST_small/I\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: 0.0526481\n",
"Standard deviation: 0.472657\n",
"notMNIST_small/J\n",
"Full dataset tensor: (1872, 28, 28)\n",
"Mean: -0.15167\n",
"Standard deviation: 0.449521\n"
]
}
],
"source": [
"image_size = 28 # Pixel width and height.\n",
"pixel_depth = 255.0 # Number of levels per pixel.\n",
"\n",
"def load_letter(folder, min_num_images):\n",
" \"\"\"Load the data for a single letter label.\"\"\"\n",
" image_files = os.listdir(folder)\n",
" dataset = np.ndarray(shape=(len(image_files), image_size, image_size),\n",
" dtype=np.float32)\n",
" print(folder)\n",
" num_images = 0\n",
" for image in image_files:\n",
" image_file = os.path.join(folder, image)\n",
" try:\n",
" image_data = (imageio.imread(image_file).astype(float) - \n",
" pixel_depth / 2) / pixel_depth\n",
" if image_data.shape != (image_size, image_size):\n",
" raise Exception('Unexpected image shape: %s' % str(image_data.shape))\n",
" dataset[num_images, :, :] = image_data\n",
" num_images = num_images + 1\n",
" except (IOError, ValueError) as e:\n",
" print('Could not read:', image_file, ':', e, '- it\\'s ok, skipping.')\n",
" \n",
" dataset = dataset[0:num_images, :, :]\n",
" if num_images < min_num_images:\n",
" raise Exception('Many fewer images than expected: %d < %d' %\n",
" (num_images, min_num_images))\n",
" \n",
" print('Full dataset tensor:', dataset.shape)\n",
" print('Mean:', np.mean(dataset))\n",
" print('Standard deviation:', np.std(dataset))\n",
" return dataset\n",
" \n",
"def maybe_pickle(data_folders, min_num_images_per_class, force=False):\n",
" dataset_names = []\n",
" for folder in data_folders:\n",
" set_filename = folder + '.pickle'\n",
" dataset_names.append(set_filename)\n",
" if os.path.exists(set_filename) and not force:\n",
" # You may override by setting force=True.\n",
" print('%s already present - Skipping pickling.' % set_filename)\n",
" else:\n",
" print('Pickling %s.' % set_filename)\n",
" dataset = load_letter(folder, min_num_images_per_class)\n",
" try:\n",
" with open(set_filename, 'wb') as f:\n",
" pickle.dump(dataset, f, pickle.HIGHEST_PROTOCOL)\n",
" except Exception as e:\n",
" print('Unable to save data to', set_filename, ':', e)\n",
" \n",
" return dataset_names\n",
"\n",
"train_datasets = maybe_pickle(train_folders, 45000)\n",
"test_datasets = maybe_pickle(test_folders, 1800)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vUdbskYE2d87"
},
"source": [
"---\n",
"Problem 2\n",
"---------\n",
"\n",
"Let's verify that the data still looks good. Displaying a sample of the labels and images from the ndarray. Hint: you can use matplotlib.pyplot.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cYznx5jUwzoO"
},
"source": [
"---\n",
"Problem 3\n",
"---------\n",
"Another check: we expect the data to be balanced across classes. Verify that.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LA7M7K22ynCt"
},
"source": [
"Merge and prune the training data as needed. Depending on your computer setup, you might not be able to fit it all in memory, and you can tune `train_size` as needed. The labels will be stored into a separate array of integers 0 through 9.\n",
"\n",
"Also create a validation dataset for hyperparameter tuning."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "s3mWgZLpyuzq"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training (200000, 28, 28) (200000,)\n",
"Validation (10000, 28, 28) (10000,)\n",
"Testing (10000, 28, 28) (10000,)\n"
]
}
],
"source": [
"def make_arrays(nb_rows, img_size):\n",
" if nb_rows:\n",
" dataset = np.ndarray((nb_rows, img_size, img_size), dtype=np.float32)\n",
" labels = np.ndarray(nb_rows, dtype=np.int32)\n",
" else:\n",
" dataset, labels = None, None\n",
" return dataset, labels\n",
"\n",
"def merge_datasets(pickle_files, train_size, valid_size=0):\n",
" num_classes = len(pickle_files)\n",
" valid_dataset, valid_labels = make_arrays(valid_size, image_size)\n",
" train_dataset, train_labels = make_arrays(train_size, image_size)\n",
" vsize_per_class = valid_size // num_classes\n",
" tsize_per_class = train_size // num_classes\n",
" \n",
" start_v, start_t = 0, 0\n",
" end_v, end_t = vsize_per_class, tsize_per_class\n",
" end_l = vsize_per_class+tsize_per_class\n",
" for label, pickle_file in enumerate(pickle_files): \n",
" try:\n",
" with open(pickle_file, 'rb') as f:\n",
" letter_set = pickle.load(f)\n",
" # let's shuffle the letters to have random validation and training set\n",
" np.random.shuffle(letter_set)\n",
" if valid_dataset is not None:\n",
" valid_letter = letter_set[:vsize_per_class, :, :]\n",
" valid_dataset[start_v:end_v, :, :] = valid_letter\n",
" valid_labels[start_v:end_v] = label\n",
" start_v += vsize_per_class\n",
" end_v += vsize_per_class\n",
" \n",
" train_letter = letter_set[vsize_per_class:end_l, :, :]\n",
" train_dataset[start_t:end_t, :, :] = train_letter\n",
" train_labels[start_t:end_t] = label\n",
" start_t += tsize_per_class\n",
" end_t += tsize_per_class\n",
" except Exception as e:\n",
" print('Unable to process data from', pickle_file, ':', e)\n",
" raise\n",
" \n",
" return valid_dataset, valid_labels, train_dataset, train_labels\n",
" \n",
" \n",
"train_size = 200000\n",
"valid_size = 10000\n",
"test_size = 10000\n",
"\n",
"valid_dataset, valid_labels, train_dataset, train_labels = merge_datasets(\n",
" train_datasets, train_size, valid_size)\n",
"_, _, test_dataset, test_labels = merge_datasets(test_datasets, test_size)\n",
"\n",
"print('Training:', train_dataset.shape, train_labels.shape)\n",
"print('Validation:', valid_dataset.shape, valid_labels.shape)\n",
"print('Testing:', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GPTCnjIcyuKN"
},
"source": [
"Next, we'll randomize the data. It's important to have the labels well shuffled for the training and test distributions to match."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "6WZ2l2tN2zOL"
},
"outputs": [],
"source": [
"def randomize(dataset, labels):\n",
" permutation = np.random.permutation(labels.shape[0])\n",
" shuffled_dataset = dataset[permutation,:,:]\n",
" shuffled_labels = labels[permutation]\n",
" return shuffled_dataset, shuffled_labels\n",
"train_dataset, train_labels = randomize(train_dataset, train_labels)\n",
"test_dataset, test_labels = randomize(test_dataset, test_labels)\n",
"valid_dataset, valid_labels = randomize(valid_dataset, valid_labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "puDUTe6t6USl"
},
"source": [
"---\n",
"Problem 4\n",
"---------\n",
"Convince yourself that the data is still good after shuffling!\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tIQJaJuwg5Hw"
},
"source": [
"Finally, let's save the data for later reuse:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "QiR_rETzem6C"
},
"outputs": [],
"source": [
"pickle_file = os.path.join(data_root, 'notMNIST.pickle')\n",
"\n",
"try:\n",
" f = open(pickle_file, 'wb')\n",
" save = {\n",
" 'train_dataset': train_dataset,\n",
" 'train_labels': train_labels,\n",
" 'valid_dataset': valid_dataset,\n",
" 'valid_labels': valid_labels,\n",
" 'test_dataset': test_dataset,\n",
" 'test_labels': test_labels,\n",
" }\n",
" pickle.dump(save, f, pickle.HIGHEST_PROTOCOL)\n",
" f.close()\n",
"except Exception as e:\n",
" print('Unable to save data to', pickle_file, ':', e)\n",
" raise"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "hQbLjrW_iT39"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Compressed pickle size: 718193801\n"
]
}
],
"source": [
"statinfo = os.stat(pickle_file)\n",
"print('Compressed pickle size:', statinfo.st_size)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gE_cRAQB33lk"
},
"source": [
"---\n",
"Problem 5\n",
"---------\n",
"\n",
"By construction, this dataset might contain a lot of overlapping samples, including training data that's also contained in the validation and test set! Overlap between training and test can skew the results if you expect to use your model in an environment where there is never an overlap, but are actually ok if you expect to see training samples recur when you use it.\n",
"Measure how much overlap there is between training, validation and test samples.\n",
"\n",
"Optional questions:\n",
"- What about near duplicates between datasets? (images that are almost identical)\n",
"- Create a sanitized validation and test set, and compare your accuracy on those in subsequent assignments.\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L8oww1s4JMQx"
},
"source": [
"---\n",
"Problem 6\n",
"---------\n",
"\n",
"Let's get an idea of what an off-the-shelf classifier can give you on this data. It's always good to check that there is something to learn, and that it's a problem that is not so trivial that a canned solution solves it.\n",
"\n",
"Train a simple model on this data using 50, 100, 1000 and 5000 training samples. Hint: you can use the LogisticRegression model from sklearn.linear_model.\n",
"\n",
"Optional question: train an off-the-shelf model on all the data!\n",
"\n",
"---"
]
}
],
"metadata": {
"colab": {
"name": "1_notmnist.ipynb",
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
================================================
FILE: courses/udacity_deep_learning/2_fullyconnected.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "kR-4eNdK6lYS"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 2\n",
"------------\n",
"\n",
"Previously in `1_notmnist.ipynb`, we created a pickle with formatted datasets for training, development and testing on the [notMNIST dataset](http://yaroslavvb.blogspot.com/2011/09/notmnist-dataset.html).\n",
"\n",
"The goal of this assignment is to progressively train deeper and more accurate models using TensorFlow."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "JLpLa8Jt7Vu4"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"from __future__ import print_function\n",
"import numpy as np\n",
"import tensorflow as tf\n",
"from six.moves import cPickle as pickle\n",
"from six.moves import range"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1HrCK6e17WzV"
},
"source": [
"First reload the data we generated in `1_notmnist.ipynb`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "y3-cj1bpmuxc"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 28, 28) (200000,)\n",
"Validation set (10000, 28, 28) (10000,)\n",
"Test set (18724, 28, 28) (18724,)\n"
]
}
],
"source": [
"pickle_file = 'notMNIST.pickle'\n",
"\n",
"with open(pickle_file, 'rb') as f:\n",
" save = pickle.load(f)\n",
" train_dataset = save['train_dataset']\n",
" train_labels = save['train_labels']\n",
" valid_dataset = save['valid_dataset']\n",
" valid_labels = save['valid_labels']\n",
" test_dataset = save['test_dataset']\n",
" test_labels = save['test_labels']\n",
" del save # hint to help gc free up memory\n",
" print('Training set', train_dataset.shape, train_labels.shape)\n",
" print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
" print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L7aHrm6nGDMB"
},
"source": [
"Reformat into a shape that's more adapted to the models we're going to train:\n",
"- data as a flat matrix,\n",
"- labels as float 1-hot encodings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "IRSyYiIIGIzS"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 784) (200000, 10)\n",
"Validation set (10000, 784) (10000, 10)\n",
"Test set (18724, 784) (18724, 10)\n"
]
}
],
"source": [
"image_size = 28\n",
"num_labels = 10\n",
"\n",
"def reformat(dataset, labels):\n",
" dataset = dataset.reshape((-1, image_size * image_size)).astype(np.float32)\n",
" # Map 0 to [1.0, 0.0, 0.0 ...], 1 to [0.0, 1.0, 0.0 ...]\n",
" labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)\n",
" return dataset, labels\n",
"train_dataset, train_labels = reformat(train_dataset, train_labels)\n",
"valid_dataset, valid_labels = reformat(valid_dataset, valid_labels)\n",
"test_dataset, test_labels = reformat(test_dataset, test_labels)\n",
"print('Training set', train_dataset.shape, train_labels.shape)\n",
"print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
"print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nCLVqyQ5vPPH"
},
"source": [
"We're first going to train a multinomial logistic regression using simple gradient descent.\n",
"\n",
"TensorFlow works like this:\n",
"* First you describe the computation that you want to see performed: what the inputs, the variables, and the operations look like. These get created as nodes over a computation graph. This description is all contained within the block below:\n",
"\n",
" with graph.as_default():\n",
" ...\n",
"\n",
"* Then you can run the operations on this graph as many times as you want by calling `session.run()`, providing it outputs to fetch from the graph that get returned. This runtime operation is all contained in the block below:\n",
"\n",
" with tf.Session(graph=graph) as session:\n",
" ...\n",
"\n",
"Let's load all the data into TensorFlow and build the computation graph corresponding to our training:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "Nfv39qvtvOl_"
},
"outputs": [],
"source": [
"# With gradient descent training, even this much data is prohibitive.\n",
"# Subset the training data for faster turnaround.\n",
"train_subset = 10000\n",
"\n",
"graph = tf.Graph()\n",
"with graph.as_default():\n",
"\n",
" # Input data.\n",
" # Load the training, validation and test data into constants that are\n",
" # attached to the graph.\n",
" tf_train_dataset = tf.constant(train_dataset[:train_subset, :])\n",
" tf_train_labels = tf.constant(train_labels[:train_subset])\n",
" tf_valid_dataset = tf.constant(valid_dataset)\n",
" tf_test_dataset = tf.constant(test_dataset)\n",
" \n",
" # Variables.\n",
" # These are the parameters that we are going to be training. The weight\n",
" # matrix will be initialized using random values following a (truncated)\n",
" # normal distribution. The biases get initialized to zero.\n",
" weights = tf.Variable(\n",
" tf.truncated_normal([image_size * image_size, num_labels]))\n",
" biases = tf.Variable(tf.zeros([num_labels]))\n",
" \n",
" # Training computation.\n",
" # We multiply the inputs with the weight matrix, and add biases. We compute\n",
" # the softmax and cross-entropy (it's one operation in TensorFlow, because\n",
" # it's very common, and it can be optimized). We take the average of this\n",
" # cross-entropy across all training examples: that's our loss.\n",
" logits = tf.matmul(tf_train_dataset, weights) + biases\n",
" loss = tf.reduce_mean(\n",
" tf.nn.softmax_cross_entropy_with_logits(labels=tf_train_labels, logits=logits))\n",
" \n",
" # Optimizer.\n",
" # We are going to find the minimum of this loss using gradient descent.\n",
" optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)\n",
" \n",
" # Predictions for the training, validation, and test data.\n",
" # These are not part of training, but merely here so that we can report\n",
" # accuracy figures as we train.\n",
" train_prediction = tf.nn.softmax(logits)\n",
" valid_prediction = tf.nn.softmax(\n",
" tf.matmul(tf_valid_dataset, weights) + biases)\n",
" test_prediction = tf.nn.softmax(tf.matmul(tf_test_dataset, weights) + biases)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KQcL4uqISHjP"
},
"source": [
"Let's run this computation and iterate:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "z2cjdenH869W"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initialized\n",
"Loss at step 0 : 17.2939\n",
"Training accuracy: 10.8%\n",
"Validation accuracy: 13.8%\n",
"Loss at step 100 : 2.26903\n",
"Training accuracy: 72.3%\n",
"Validation accuracy: 71.6%\n",
"Loss at step 200 : 1.84895\n",
"Training accuracy: 74.9%\n",
"Validation accuracy: 73.9%\n",
"Loss at step 300 : 1.60701\n",
"Training accuracy: 76.0%\n",
"Validation accuracy: 74.5%\n",
"Loss at step 400 : 1.43912\n",
"Training accuracy: 76.8%\n",
"Validation accuracy: 74.8%\n",
"Loss at step 500 : 1.31349\n",
"Training accuracy: 77.5%\n",
"Validation accuracy: 75.0%\n",
"Loss at step 600 : 1.21501\n",
"Training accuracy: 78.1%\n",
"Validation accuracy: 75.4%\n",
"Loss at step 700 : 1.13515\n",
"Training accuracy: 78.6%\n",
"Validation accuracy: 75.4%\n",
"Loss at step 800 : 1.0687\n",
"Training accuracy: 79.2%\n",
"Validation accuracy: 75.6%\n",
"Test accuracy: 82.9%\n"
]
}
],
"source": [
"num_steps = 801\n",
"\n",
"def accuracy(predictions, labels):\n",
" return (100.0 * np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))\n",
" / predictions.shape[0])\n",
"\n",
"with tf.Session(graph=graph) as session:\n",
" # This is a one-time operation which ensures the parameters get initialized as\n",
" # we described in the graph: random weights for the matrix, zeros for the\n",
" # biases. \n",
" tf.global_variables_initializer().run()\n",
" print('Initialized')\n",
" for step in range(num_steps):\n",
" # Run the computations. We tell .run() that we want to run the optimizer,\n",
" # and get the loss value and the training predictions returned as numpy\n",
" # arrays.\n",
" _, l, predictions = session.run([optimizer, loss, train_prediction])\n",
" if (step % 100 == 0):\n",
" print('Loss at step %d: %f' % (step, l))\n",
" print('Training accuracy: %.1f%%' % accuracy(\n",
" predictions, train_labels[:train_subset, :]))\n",
" # Calling .eval() on valid_prediction is basically like calling run(), but\n",
" # just to get that one numpy array. Note that it recomputes all its graph\n",
" # dependencies.\n",
" print('Validation accuracy: %.1f%%' % accuracy(\n",
" valid_prediction.eval(), valid_labels))\n",
" print('Test accuracy: %.1f%%' % accuracy(test_prediction.eval(), test_labels))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "x68f-hxRGm3H"
},
"source": [
"Let's now switch to stochastic gradient descent training instead, which is much faster.\n",
"\n",
"The graph will be similar, except that instead of holding all the training data into a constant node, we create a `Placeholder` node which will be fed actual data at every call of `session.run()`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "qhPMzWYRGrzM"
},
"outputs": [],
"source": [
"batch_size = 128\n",
"\n",
"graph = tf.Graph()\n",
"with graph.as_default():\n",
"\n",
" # Input data. For the training data, we use a placeholder that will be fed\n",
" # at run time with a training minibatch.\n",
" tf_train_dataset = tf.placeholder(tf.float32,\n",
" shape=(batch_size, image_size * image_size))\n",
" tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))\n",
" tf_valid_dataset = tf.constant(valid_dataset)\n",
" tf_test_dataset = tf.constant(test_dataset)\n",
" \n",
" # Variables.\n",
" weights = tf.Variable(\n",
" tf.truncated_normal([image_size * image_size, num_labels]))\n",
" biases = tf.Variable(tf.zeros([num_labels]))\n",
" \n",
" # Training computation.\n",
" logits = tf.matmul(tf_train_dataset, weights) + biases\n",
" loss = tf.reduce_mean(\n",
" tf.nn.softmax_cross_entropy_with_logits(labels=tf_train_labels, logits=logits))\n",
" \n",
" # Optimizer.\n",
" optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)\n",
" \n",
" # Predictions for the training, validation, and test data.\n",
" train_prediction = tf.nn.softmax(logits)\n",
" valid_prediction = tf.nn.softmax(\n",
" tf.matmul(tf_valid_dataset, weights) + biases)\n",
" test_prediction = tf.nn.softmax(tf.matmul(tf_test_dataset, weights) + biases)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XmVZESmtG4JH"
},
"source": [
"Let's run it:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "FoF91pknG_YW"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initialized\n",
"Minibatch loss at step 0 : 16.8091\n",
"Minibatch accuracy: 12.5%\n",
"Validation accuracy: 14.0%\n",
"Minibatch loss at step 500 : 1.75256\n",
"Minibatch accuracy: 77.3%\n",
"Validation accuracy: 75.0%\n",
"Minibatch loss at step 1000 : 1.32283\n",
"Minibatch accuracy: 77.3%\n",
"Validation accuracy: 76.6%\n",
"Minibatch loss at step 1500 : 0.944533\n",
"Minibatch accuracy: 83.6%\n",
"Validation accuracy: 76.5%\n",
"Minibatch loss at step 2000 : 1.03795\n",
"Minibatch accuracy: 78.9%\n",
"Validation accuracy: 77.8%\n",
"Minibatch loss at step 2500 : 1.10219\n",
"Minibatch accuracy: 80.5%\n",
"Validation accuracy: 78.0%\n",
"Minibatch loss at step 3000 : 0.758874\n",
"Minibatch accuracy: 82.8%\n",
"Validation accuracy: 78.8%\n",
"Test accuracy: 86.1%\n"
]
}
],
"source": [
"num_steps = 3001\n",
"\n",
"with tf.Session(graph=graph) as session:\n",
" tf.global_variables_initializer().run()\n",
" print(\"Initialized\")\n",
" for step in range(num_steps):\n",
" # Pick an offset within the training data, which has been randomized.\n",
" # Note: we could use better randomization across epochs.\n",
" offset = (step * batch_size) % (train_labels.shape[0] - batch_size)\n",
" # Generate a minibatch.\n",
" batch_data = train_dataset[offset:(offset + batch_size), :]\n",
" batch_labels = train_labels[offset:(offset + batch_size), :]\n",
" # Prepare a dictionary telling the session where to feed the minibatch.\n",
" # The key of the dictionary is the placeholder node of the graph to be fed,\n",
" # and the value is the numpy array to feed to it.\n",
" feed_dict = {tf_train_dataset : batch_data, tf_train_labels : batch_labels}\n",
" _, l, predictions = session.run(\n",
" [optimizer, loss, train_prediction], feed_dict=feed_dict)\n",
" if (step % 500 == 0):\n",
" print(\"Minibatch loss at step %d: %f\" % (step, l))\n",
" print(\"Minibatch accuracy: %.1f%%\" % accuracy(predictions, batch_labels))\n",
" print(\"Validation accuracy: %.1f%%\" % accuracy(\n",
" valid_prediction.eval(), valid_labels))\n",
" print(\"Test accuracy: %.1f%%\" % accuracy(test_prediction.eval(), test_labels))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7omWxtvLLxik"
},
"source": [
"---\n",
"Problem\n",
"-------\n",
"\n",
"Turn the logistic regression example with SGD into a 1-hidden layer neural network with rectified linear units [nn.relu()](https://www.tensorflow.org/versions/r0.7/api_docs/python/nn.html#relu) and 1024 hidden nodes. This model should improve your validation / test accuracy.\n",
"\n",
"---"
]
}
],
"metadata": {
"colab": {
"name": "2_fullyconnected.ipynb",
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
================================================
FILE: courses/udacity_deep_learning/3_regularization.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "kR-4eNdK6lYS"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 3\n",
"------------\n",
"\n",
"Previously in `2_fullyconnected.ipynb`, you trained a logistic regression and a neural network model.\n",
"\n",
"The goal of this assignment is to explore regularization techniques."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "JLpLa8Jt7Vu4"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"from __future__ import print_function\n",
"import numpy as np\n",
"import tensorflow as tf\n",
"from six.moves import cPickle as pickle"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1HrCK6e17WzV"
},
"source": [
"First reload the data we generated in `1_notmnist.ipynb`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "y3-cj1bpmuxc"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 28, 28) (200000,)\n",
"Validation set (10000, 28, 28) (10000,)\n",
"Test set (18724, 28, 28) (18724,)\n"
]
}
],
"source": [
"pickle_file = 'notMNIST.pickle'\n",
"\n",
"with open(pickle_file, 'rb') as f:\n",
" save = pickle.load(f)\n",
" train_dataset = save['train_dataset']\n",
" train_labels = save['train_labels']\n",
" valid_dataset = save['valid_dataset']\n",
" valid_labels = save['valid_labels']\n",
" test_dataset = save['test_dataset']\n",
" test_labels = save['test_labels']\n",
" del save # hint to help gc free up memory\n",
" print('Training set', train_dataset.shape, train_labels.shape)\n",
" print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
" print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L7aHrm6nGDMB"
},
"source": [
"Reformat into a shape that's more adapted to the models we're going to train:\n",
"- data as a flat matrix,\n",
"- labels as float 1-hot encodings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "IRSyYiIIGIzS"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 784) (200000, 10)\n",
"Validation set (10000, 784) (10000, 10)\n",
"Test set (18724, 784) (18724, 10)\n"
]
}
],
"source": [
"image_size = 28\n",
"num_labels = 10\n",
"\n",
"def reformat(dataset, labels):\n",
" dataset = dataset.reshape((-1, image_size * image_size)).astype(np.float32)\n",
" # Map 1 to [0.0, 1.0, 0.0 ...], 2 to [0.0, 0.0, 1.0 ...]\n",
" labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)\n",
" return dataset, labels\n",
"train_dataset, train_labels = reformat(train_dataset, train_labels)\n",
"valid_dataset, valid_labels = reformat(valid_dataset, valid_labels)\n",
"test_dataset, test_labels = reformat(test_dataset, test_labels)\n",
"print('Training set', train_dataset.shape, train_labels.shape)\n",
"print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
"print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "RajPLaL_ZW6w"
},
"outputs": [],
"source": [
"def accuracy(predictions, labels):\n",
" return (100.0 * np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))\n",
" / predictions.shape[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sgLbUAQ1CW-1"
},
"source": [
"---\n",
"Problem 1\n",
"---------\n",
"\n",
"Introduce and tune L2 regularization for both logistic and neural network models. Remember that L2 amounts to adding a penalty on the norm of the weights to the loss. In TensorFlow, you can compute the L2 loss for a tensor `t` using `nn.l2_loss(t)`. The right amount of regularization should improve your validation / test accuracy.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "na8xX2yHZzNF"
},
"source": [
"---\n",
"Problem 2\n",
"---------\n",
"Let's demonstrate an extreme case of overfitting. Restrict your training data to just a few batches. What happens?\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ww3SCBUdlkRc"
},
"source": [
"---\n",
"Problem 3\n",
"---------\n",
"Introduce Dropout on the hidden layer of the neural network. Remember: Dropout should only be introduced during training, not evaluation, otherwise your evaluation results would be stochastic as well. TensorFlow provides `nn.dropout()` for that, but you have to make sure it's only inserted during training.\n",
"\n",
"What happens to our extreme overfitting case?\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-b1hTz3VWZjw"
},
"source": [
"---\n",
"Problem 4\n",
"---------\n",
"\n",
"Try to get the best performance you can using a multi-layer model! The best reported test accuracy using a deep network is [97.1%](http://yaroslavvb.blogspot.com/2011/09/notmnist-dataset.html?showComment=1391023266211#c8758720086795711595).\n",
"\n",
"One avenue you can explore is to add multiple layers.\n",
"\n",
"Another one is to use learning rate decay:\n",
"\n",
" global_step = tf.Variable(0) # count the number of steps taken.\n",
" learning_rate = tf.train.exponential_decay(0.5, global_step, ...)\n",
" optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_step)\n",
" \n",
" ---\n"
]
}
],
"metadata": {
"colab": {
"name": "3_regularization.ipynb",
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
================================================
FILE: courses/udacity_deep_learning/4_convolutions.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "4embtkV0pNxM"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 4\n",
"------------\n",
"\n",
"Previously in `2_fullyconnected.ipynb` and `3_regularization.ipynb`, we trained fully connected networks to classify [notMNIST](http://yaroslavvb.blogspot.com/2011/09/notmnist-dataset.html) characters.\n",
"\n",
"The goal of this assignment is make the neural network convolutional."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "tm2CQN_Cpwj0"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"from __future__ import print_function\n",
"import numpy as np\n",
"import tensorflow as tf\n",
"from six.moves import cPickle as pickle\n",
"from six.moves import range"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "y3-cj1bpmuxc"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 28, 28) (200000,)\n",
"Validation set (10000, 28, 28) (10000,)\n",
"Test set (18724, 28, 28) (18724,)\n"
]
}
],
"source": [
"pickle_file = 'notMNIST.pickle'\n",
"\n",
"with open(pickle_file, 'rb') as f:\n",
" save = pickle.load(f)\n",
" train_dataset = save['train_dataset']\n",
" train_labels = save['train_labels']\n",
" valid_dataset = save['valid_dataset']\n",
" valid_labels = save['valid_labels']\n",
" test_dataset = save['test_dataset']\n",
" test_labels = save['test_labels']\n",
" del save # hint to help gc free up memory\n",
" print('Training set', train_dataset.shape, train_labels.shape)\n",
" print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
" print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L7aHrm6nGDMB"
},
"source": [
"Reformat into a TensorFlow-friendly shape:\n",
"- convolutions need the image data formatted as a cube (width by height by #channels)\n",
"- labels as float 1-hot encodings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "IRSyYiIIGIzS"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set (200000, 28, 28, 1) (200000, 10)\n",
"Validation set (10000, 28, 28, 1) (10000, 10)\n",
"Test set (18724, 28, 28, 1) (18724, 10)\n"
]
}
],
"source": [
"image_size = 28\n",
"num_labels = 10\n",
"num_channels = 1 # grayscale\n",
"\n",
"import numpy as np\n",
"\n",
"def reformat(dataset, labels):\n",
" dataset = dataset.reshape(\n",
" (-1, image_size, image_size, num_channels)).astype(np.float32)\n",
" labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)\n",
" return dataset, labels\n",
"train_dataset, train_labels = reformat(train_dataset, train_labels)\n",
"valid_dataset, valid_labels = reformat(valid_dataset, valid_labels)\n",
"test_dataset, test_labels = reformat(test_dataset, test_labels)\n",
"print('Training set', train_dataset.shape, train_labels.shape)\n",
"print('Validation set', valid_dataset.shape, valid_labels.shape)\n",
"print('Test set', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "AgQDIREv02p1"
},
"outputs": [],
"source": [
"def accuracy(predictions, labels):\n",
" return (100.0 * np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))\n",
" / predictions.shape[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5rhgjmROXu2O"
},
"source": [
"Let's build a small network with two convolutional layers, followed by one fully connected layer. Convolutional networks are more expensive computationally, so we'll limit its depth and number of fully connected nodes."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "IZYv70SvvOan"
},
"outputs": [],
"source": [
"batch_size = 16\n",
"patch_size = 5\n",
"depth = 16\n",
"num_hidden = 64\n",
"\n",
"graph = tf.Graph()\n",
"\n",
"with graph.as_default():\n",
"\n",
" # Input data.\n",
" tf_train_dataset = tf.placeholder(\n",
" tf.float32, shape=(batch_size, image_size, image_size, num_channels))\n",
" tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))\n",
" tf_valid_dataset = tf.constant(valid_dataset)\n",
" tf_test_dataset = tf.constant(test_dataset)\n",
" \n",
" # Variables.\n",
" layer1_weights = tf.Variable(tf.truncated_normal(\n",
" [patch_size, patch_size, num_channels, depth], stddev=0.1))\n",
" layer1_biases = tf.Variable(tf.zeros([depth]))\n",
" layer2_weights = tf.Variable(tf.truncated_normal(\n",
" [patch_size, patch_size, depth, depth], stddev=0.1))\n",
" layer2_biases = tf.Variable(tf.constant(1.0, shape=[depth]))\n",
" layer3_weights = tf.Variable(tf.truncated_normal(\n",
" [image_size // 4 * image_size // 4 * depth, num_hidden], stddev=0.1))\n",
" layer3_biases = tf.Variable(tf.constant(1.0, shape=[num_hidden]))\n",
" layer4_weights = tf.Variable(tf.truncated_normal(\n",
" [num_hidden, num_labels], stddev=0.1))\n",
" layer4_biases = tf.Variable(tf.constant(1.0, shape=[num_labels]))\n",
" \n",
" # Model.\n",
" def model(data):\n",
" conv = tf.nn.conv2d(data, layer1_weights, [1, 2, 2, 1], padding='SAME')\n",
" hidden = tf.nn.relu(conv + layer1_biases)\n",
" conv = tf.nn.conv2d(hidden, layer2_weights, [1, 2, 2, 1], padding='SAME')\n",
" hidden = tf.nn.relu(conv + layer2_biases)\n",
" shape = hidden.get_shape().as_list()\n",
" reshape = tf.reshape(hidden, [shape[0], shape[1] * shape[2] * shape[3]])\n",
" hidden = tf.nn.relu(tf.matmul(reshape, layer3_weights) + layer3_biases)\n",
" return tf.matmul(hidden, layer4_weights) + layer4_biases\n",
" \n",
" # Training computation.\n",
" logits = model(tf_train_dataset)\n",
" loss = tf.reduce_mean(\n",
" tf.nn.softmax_cross_entropy_with_logits(labels=tf_train_labels, logits=logits))\n",
" \n",
" # Optimizer.\n",
" optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(loss)\n",
" \n",
" # Predictions for the training, validation, and test data.\n",
" train_prediction = tf.nn.softmax(logits)\n",
" valid_prediction = tf.nn.softmax(model(tf_valid_dataset))\n",
" test_prediction = tf.nn.softmax(model(tf_test_dataset))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "noKFb2UovVFR"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initialized\n",
"Minibatch loss at step 0 : 3.51275\n",
"Minibatch accuracy: 6.2%\n",
"Validation accuracy: 12.8%\n",
"Minibatch loss at step 50 : 1.48703\n",
"Minibatch accuracy: 43.8%\n",
"Validation accuracy: 50.4%\n",
"Minibatch loss at step 100 : 1.04377\n",
"Minibatch accuracy: 68.8%\n",
"Validation accuracy: 67.4%\n",
"Minibatch loss at step 150 : 0.601682\n",
"Minibatch accuracy: 68.8%\n",
"Validation accuracy: 73.0%\n",
"Minibatch loss at step 200 : 0.898649\n",
"Minibatch accuracy: 75.0%\n",
"Validation accuracy: 77.8%\n",
"Minibatch loss at step 250 : 1.3637\n",
"Minibatch accuracy: 56.2%\n",
"Validation accuracy: 75.4%\n",
"Minibatch loss at step 300 : 1.41968\n",
"Minibatch accuracy: 62.5%\n",
"Validation accuracy: 76.0%\n",
"Minibatch loss at step 350 : 0.300648\n",
"Minibatch accuracy: 81.2%\n",
"Validation accuracy: 80.2%\n",
"Minibatch loss at step 400 : 1.32092\n",
"Minibatch accuracy: 56.2%\n",
"Validation accuracy: 80.4%\n",
"Minibatch loss at step 450 : 0.556701\n",
"Minibatch accuracy: 81.2%\n",
"Validation accuracy: 79.4%\n",
"Minibatch loss at step 500 : 1.65595\n",
"Minibatch accuracy: 43.8%\n",
"Validation accuracy: 79.6%\n",
"Minibatch loss at step 550 : 1.06995\n",
"Minibatch accuracy: 75.0%\n",
"Validation accuracy: 81.2%\n",
"Minibatch loss at step 600 : 0.223684\n",
"Minibatch accuracy: 100.0%\n",
"Validation accuracy: 82.3%\n",
"Minibatch loss at step 650 : 0.619602\n",
"Minibatch accuracy: 87.5%\n",
"Validation accuracy: 81.8%\n",
"Minibatch loss at step 700 : 0.812091\n",
"Minibatch accuracy: 75.0%\n",
"Validation accuracy: 82.4%\n",
"Minibatch loss at step 750 : 0.276302\n",
"Minibatch accuracy: 87.5%\n",
"Validation accuracy: 82.3%\n",
"Minibatch loss at step 800 : 0.450241\n",
"Minibatch accuracy: 81.2%\n",
"Validation accuracy: 82.3%\n",
"Minibatch loss at step 850 : 0.137139\n",
"Minibatch accuracy: 93.8%\n",
"Validation accuracy: 82.3%\n",
"Minibatch loss at step 900 : 0.52664\n",
"Minibatch accuracy: 75.0%\n",
"Validation accuracy: 82.2%\n",
"Minibatch loss at step 950 : 0.623835\n",
"Minibatch accuracy: 87.5%\n",
"Validation accuracy: 82.1%\n",
"Minibatch loss at step 1000 : 0.243114\n",
"Minibatch accuracy: 93.8%\n",
"Validation accuracy: 82.9%\n",
"Test accuracy: 90.0%\n"
]
}
],
"source": [
"num_steps = 1001\n",
"\n",
"with tf.Session(graph=graph) as session:\n",
" tf.global_variables_initializer().run()\n",
" print('Initialized')\n",
" for step in range(num_steps):\n",
" offset = (step * batch_size) % (train_labels.shape[0] - batch_size)\n",
" batch_data = train_dataset[offset:(offset + batch_size), :, :, :]\n",
" batch_labels = train_labels[offset:(offset + batch_size), :]\n",
" feed_dict = {tf_train_dataset : batch_data, tf_train_labels : batch_labels}\n",
" _, l, predictions = session.run(\n",
" [optimizer, loss, train_prediction], feed_dict=feed_dict)\n",
" if (step % 50 == 0):\n",
" print('Minibatch loss at step %d: %f' % (step, l))\n",
" print('Minibatch accuracy: %.1f%%' % accuracy(predictions, batch_labels))\n",
" print('Validation accuracy: %.1f%%' % accuracy(\n",
" valid_prediction.eval(), valid_labels))\n",
" print('Test accuracy: %.1f%%' % accuracy(test_prediction.eval(), test_labels))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KedKkn4EutIK"
},
"source": [
"---\n",
"Problem 1\n",
"---------\n",
"\n",
"The convolutional model above uses convolutions with stride 2 to reduce the dimensionality. Replace the strides by a max pooling operation (`nn.max_pool()`) of stride 2 and kernel size 2.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "klf21gpbAgb-"
},
"source": [
"---\n",
"Problem 2\n",
"---------\n",
"\n",
"Try to get the best performance you can using a convolutional net. Look for example at the classic [LeNet5](http://yann.lecun.com/exdb/lenet/) architecture, adding Dropout, and/or adding learning rate decay.\n",
"\n",
"---"
]
}
],
"metadata": {
"colab": {
"name": "4_convolutions.ipynb",
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
================================================
FILE: courses/udacity_deep_learning/5_word2vec.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "D7tqLMoKF6uq"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 5\n",
"------------\n",
"\n",
"The goal of this assignment is to train a Word2Vec skip-gram model over [Text8](http://mattmahoney.net/dc/textdata) data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "0K1ZyLn04QZf"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"%matplotlib inline\n",
"from __future__ import print_function\n",
"import collections\n",
"import math\n",
"import numpy as np\n",
"import os\n",
"import random\n",
"import tensorflow as tf\n",
"import zipfile\n",
"from matplotlib import pylab\n",
"from six.moves import range\n",
"from six.moves.urllib.request import urlretrieve\n",
"from sklearn.manifold import TSNE"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aCjPJE944bkV"
},
"source": [
"Download the data from the source website if necessary."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "RJ-o3UBUFtCw"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found and verified text8.zip\n"
]
}
],
"source": [
"url = 'http://mattmahoney.net/dc/'\n",
"\n",
"def maybe_download(filename, expected_bytes):\n",
" \"\"\"Download a file if not present, and make sure it's the right size.\"\"\"\n",
" if not os.path.exists(filename):\n",
" filename, _ = urlretrieve(url + filename, filename)\n",
" statinfo = os.stat(filename)\n",
" if statinfo.st_size == expected_bytes:\n",
" print('Found and verified %s' % filename)\n",
" else:\n",
" print(statinfo.st_size)\n",
" raise Exception(\n",
" 'Failed to verify ' + filename + '. Can you get to it with a browser?')\n",
" return filename\n",
"\n",
"filename = maybe_download('text8.zip', 31344016)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Zqz3XiqI4mZT"
},
"source": [
"Read the data into a string."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "Mvf09fjugFU_"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data size 17005207\n"
]
}
],
"source": [
"def read_data(filename):\n",
" \"\"\"Extract the first file enclosed in a zip file as a list of words\"\"\"\n",
" with zipfile.ZipFile(filename) as f:\n",
" data = tf.compat.as_str(f.read(f.namelist()[0])).split()\n",
" return data\n",
" \n",
"words = read_data(filename)\n",
"print('Data size %d' % len(words))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Zdw6i4F8glpp"
},
"source": [
"Build the dictionary and replace rare words with UNK token."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "gAL1EECXeZsD"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Most common words (+UNK) [['UNK', 418391], ('the', 1061396), ('of', 593677), ('and', 416629), ('one', 411764)]\n",
"Sample data [5243, 3083, 12, 6, 195, 2, 3136, 46, 59, 156]\n"
]
}
],
"source": [
"vocabulary_size = 50000\n",
"\n",
"def build_dataset(words):\n",
" count = [['UNK', -1]]\n",
" count.extend(collections.Counter(words).most_common(vocabulary_size - 1))\n",
" dictionary = dict()\n",
" for word, _ in count:\n",
" dictionary[word] = len(dictionary)\n",
" data = list()\n",
" unk_count = 0\n",
" for word in words:\n",
" if word in dictionary:\n",
" index = dictionary[word]\n",
" else:\n",
" index = 0 # dictionary['UNK']\n",
" unk_count = unk_count + 1\n",
" data.append(index)\n",
" count[0][1] = unk_count\n",
" reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys())) \n",
" return data, count, dictionary, reverse_dictionary\n",
"\n",
"data, count, dictionary, reverse_dictionary = build_dataset(words)\n",
"print('Most common words (+UNK)', count[:5])\n",
"print('Sample data', data[:10])\n",
"del words # Hint to reduce memory."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lFwoyygOmWsL"
},
"source": [
"Function to generate a training batch for the skip-gram model."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "w9APjA-zmfjV"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data: ['anarchism', 'originated', 'as', 'a', 'term', 'of', 'abuse', 'first']\n",
"\n",
"with num_skips = 2 and skip_window = 1:\n",
" batch: ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term']\n",
" labels: ['as', 'anarchism', 'a', 'originated', 'term', 'as', 'a', 'of']\n",
"\n",
"with num_skips = 4 and skip_window = 2:\n",
" batch: ['as', 'as', 'as', 'as', 'a', 'a', 'a', 'a']\n",
" labels: ['anarchism', 'originated', 'term', 'a', 'as', 'of', 'originated', 'term']\n"
]
}
],
"source": [
"data_index = 0\n",
"\n",
"def generate_batch(batch_size, num_skips, skip_window):\n",
" global data_index\n",
" assert batch_size % num_skips == 0\n",
" assert num_skips <= 2 * skip_window\n",
" batch = np.ndarray(shape=(batch_size), dtype=np.int32)\n",
" labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)\n",
" span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n",
" buffer = collections.deque(maxlen=span)\n",
" for _ in range(span):\n",
" buffer.append(data[data_index])\n",
" data_index = (data_index + 1) % len(data)\n",
" for i in range(batch_size // num_skips):\n",
" target = skip_window # target label at the center of the buffer\n",
" targets_to_avoid = [ skip_window ]\n",
" for j in range(num_skips):\n",
" while target in targets_to_avoid:\n",
" target = random.randint(0, span - 1)\n",
" targets_to_avoid.append(target)\n",
" batch[i * num_skips + j] = buffer[skip_window]\n",
" labels[i * num_skips + j, 0] = buffer[target]\n",
" buffer.append(data[data_index])\n",
" data_index = (data_index + 1) % len(data)\n",
" return batch, labels\n",
"\n",
"print('data:', [reverse_dictionary[di] for di in data[:8]])\n",
"\n",
"for num_skips, skip_window in [(2, 1), (4, 2)]:\n",
" data_index = 0\n",
" batch, labels = generate_batch(batch_size=8, num_skips=num_skips, skip_window=skip_window)\n",
" print('\\nwith num_skips = %d and skip_window = %d:' % (num_skips, skip_window))\n",
" print(' batch:', [reverse_dictionary[bi] for bi in batch])\n",
" print(' labels:', [reverse_dictionary[li] for li in labels.reshape(8)])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ofd1MbBuwiva"
},
"source": [
"Train a skip-gram model."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "8pQKsV4Vwlzy"
},
"outputs": [],
"source": [
"batch_size = 128\n",
"embedding_size = 128 # Dimension of the embedding vector.\n",
"skip_window = 1 # How many words to consider left and right.\n",
"num_skips = 2 # How many times to reuse an input to generate a label.\n",
"# We pick a random validation set to sample nearest neighbors. here we limit the\n",
"# validation samples to the words that have a low numeric ID, which by\n",
"# construction are also the most frequent. \n",
"valid_size = 16 # Random set of words to evaluate similarity on.\n",
"valid_window = 100 # Only pick dev samples in the head of the distribution.\n",
"valid_examples = np.array(random.sample(range(valid_window), valid_size))\n",
"num_sampled = 64 # Number of negative examples to sample.\n",
"\n",
"graph = tf.Graph()\n",
"\n",
"with graph.as_default(), tf.device('/cpu:0'):\n",
"\n",
" # Input data.\n",
" train_dataset = tf.placeholder(tf.int32, shape=[batch_size])\n",
" train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n",
" valid_dataset = tf.constant(valid_examples, dtype=tf.int32)\n",
" \n",
" # Variables.\n",
" embeddings = tf.Variable(\n",
" tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))\n",
" softmax_weights = tf.Variable(\n",
" tf.truncated_normal([vocabulary_size, embedding_size],\n",
" stddev=1.0 / math.sqrt(embedding_size)))\n",
" softmax_biases = tf.Variable(tf.zeros([vocabulary_size]))\n",
" \n",
" # Model.\n",
" # Look up embeddings for inputs.\n",
" embed = tf.nn.embedding_lookup(embeddings, train_dataset)\n",
" # Compute the softmax loss, using a sample of the negative labels each time.\n",
" loss = tf.reduce_mean(\n",
" tf.nn.sampled_softmax_loss(weights=softmax_weights, biases=softmax_biases, inputs=embed,\n",
" labels=train_labels, num_sampled=num_sampled, num_classes=vocabulary_size))\n",
"\n",
" # Optimizer.\n",
" # Note: The optimizer will optimize the softmax_weights AND the embeddings.\n",
" # This is because the embeddings are defined as a variable quantity and the\n",
" # optimizer's `minimize` method will by default modify all variable quantities \n",
" # that contribute to the tensor it is passed.\n",
" # See docs on `tf.train.Optimizer.minimize()` for more details.\n",
" optimizer = tf.train.AdagradOptimizer(1.0).minimize(loss)\n",
" \n",
" # Compute the similarity between minibatch examples and all embeddings.\n",
" # We use the cosine distance:\n",
" norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keepdims=True))\n",
" normalized_embeddings = embeddings / norm\n",
" valid_embeddings = tf.nn.embedding_lookup(\n",
" normalized_embeddings, valid_dataset)\n",
" similarity = tf.matmul(valid_embeddings, tf.transpose(normalized_embeddings))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "1bQFGceBxrWW"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initialized\n",
"Average loss at step 0 : 8.58149623871\n",
"Nearest to been: unfavourably, marmara, ancestral, legal, bogart, glossaries, worst, rooms,\n",
"Nearest to time: conformist, strawberries, sindhi, waterfall, xia, nominates, psp, sensitivity,\n",
"Nearest to over: overlord, panda, golden, semigroup, rawlings, involved, shreveport, handling,\n",
"Nearest to not: hymenoptera, reintroducing, lamiaceae, because, davao, omnipotent, combustion, debilitating,\n",
"Nearest to three: catalog, koza, gn, braque, holstein, postgresql, luddite, justine,\n",
"Nearest to if: chilled, vince, fiddler, represented, sandinistas, happiness, lya, glands,\n",
"Nearest to there: coast, photosynthetic, kimmei, legally, inner, illyricum, formats, fullmetal,\n",
"Nearest to between: chuvash, prinz, suitability, wolfe, guideline, computability, diminutive, paulo,\n",
"Nearest to from: tanganyika, workshop, elphinstone, spearhead, resurrected, kevlar, shangri, loves,\n",
"Nearest to state: sextus, wuppertal, glaring, inches, unrounded, courageous, adler, connie,\n",
"Nearest to on: gino, phocas, rhine, jg, macrocosm, jackass, jays, theorie,\n",
"Nearest to and: standings, towed, reyes, willard, equality, juggling, wladislaus, faked,\n",
"Nearest to eight: gresham, dogg, moko, tennis, superseded, telegraphy, scramble, vinod,\n",
"Nearest to they: prisons, divisor, coder, ribeira, willingness, factional, nne, lotta,\n",
"Nearest to more: blues, fur, sterling, tangier, khwarizmi, discouraged, cal, deicide,\n",
"Nearest to other: enemies, bogged, brassicaceae, lascaux, dispense, alexandrians, crimea, dou,\n",
"Average loss at step 2000 : 4.39983723116\n",
"Average loss at step 4000 : 3.86921076906\n",
"Average loss at step 6000 : 3.72542127335\n",
"Average loss at step 8000 : 3.57835536212\n",
"Average loss at step 10000 : 3.61056993055\n",
"Nearest to been: glossaries, legal, unfavourably, be, hadad, wore, scarcity, were,\n",
"Nearest to time: strawberries, conformist, gleichschaltung, waterfall, molality, nominates, baal, dole,\n",
"Nearest to over: golden, semigroup, catus, motorways, brick, shehri, mussolini, overlord,\n",
"Nearest to not: hinayana, it, often, they, boots, also, noaa, lindsey,\n",
"Nearest to three: four, seven, six, five, nine, eight, two, zero,\n",
"Nearest to if: glands, euros, wallpaper, redefine, toho, confuse, unsound, shepherd,\n",
"Nearest to there: it, they, fullmetal, pace, legally, harpsichord, mma, bug,\n",
"Nearest to between: chuvash, wandering, from, kirsch, pursuant, eurocents, suitability, jackie,\n",
"Nearest to from: into, in, workshop, to, at, misogynist, elphinstone, spearhead,\n",
"Nearest to state: sextus, glaring, connie, adler, esoteric, didactic, handedness, presidents,\n",
"Nearest to on: in, at, for, ruminants, wakefulness, torrey, foley, gino,\n",
"Nearest to and: or, who, but, zelda, of, for, thirst, chisel,\n",
"Nearest to eight: nine, six, seven, five, four, three, zero, two,\n",
"Nearest to they: he, prisons, there, we, hydrate, it, not, cumbersome,\n",
"Nearest to more: skye, blues, trypomastigotes, deicide, most, readable, used, sterling,\n",
"Nearest to other: trochaic, hush, surveyors, joachim, differentiation, attackers, reverence, attestation,\n",
"Average loss at step 12000 : 3.66169466591\n",
"Average loss at step 14000 : 3.60342905837\n",
"Average loss at step 16000 : 3.57761328053\n",
"Average loss at step 18000 : 3.57667332476\n",
"Average loss at step 20000 : 3.53310145146\n",
"Nearest to been: be, become, was, hadad, unfavourably, were, wore, partido,\n",
"Nearest to time: gleichschaltung, strawberries, year, nominates, conformist, etch, admittedly, treasuries,\n",
"Nearest to over: golden, semigroup, motorways, rawlings, triangle, trey, ustawa, mattingly,\n",
"Nearest to not: they, boots, often, dieppe, still, hinayana, nearly, be,\n",
"Nearest to three: two, four, five, seven, eight, six, nine, one,\n",
"Nearest to if: wallpaper, euros, before, toho, unsound, so, bg, pfc,\n",
"Nearest to there: they, it, he, usually, which, we, not, transactions,\n",
"Nearest to between: from, with, about, near, reactance, eurocents, wandering, voltaire,\n",
"Nearest to from: into, workshop, by, between, in, on, elphinstone, under,\n",
"Nearest to state: glaring, esoteric, succeeding, sextus, vorarlberg, presidents, depends, connie,\n",
"Nearest to on: in, at, upon, during, from, janis, foley, nubian,\n",
"Nearest to and: or, thirst, but, where, s, who, pfaff, including,\n",
"Nearest to eight: nine, seven, six, five, four, three, zero, one,\n",
"Nearest to they: there, he, we, not, it, you, prisons, who,\n",
"Nearest to more: less, most, deicide, skye, trypomastigotes, interventionism, toed, drummond,\n",
"Nearest to other: such, joachim, hush, attackers, surveyors, trochaic, differentiation, reverence,\n",
"Average loss at step 22000 : 3.59519316927\n",
"Average loss at step 24000 : 3.55378576797\n",
"Average loss at step 26000 : 3.56455037558\n",
"Average loss at step 28000 : 3.5040882225\n",
"Average loss at step 30000 : 3.39208897972\n",
"Nearest to been: become, be, were, was, spotless, hadad, by, hausdorff,\n",
"Nearest to time: gleichschaltung, year, day, nominates, jesus, strawberries, way, admittedly,\n",
"Nearest to over: golden, semigroup, motorways, rawlings, interventionism, counternarcotics, adaption, brick,\n",
"Nearest to not: often, they, it, never, still, nor, boots, pki,\n",
"Nearest to three: four, six, two, eight, five, seven, nine, zero,\n",
"Nearest to if: when, before, so, should, toho, where, bg, wallpaper,\n",
"Nearest to there: they, it, which, usually, he, that, also, now,\n",
"Nearest to between: with, from, in, panasonic, presupposes, churchmen, hijacking, where,\n",
"Nearest to from: into, elphinstone, workshop, between, through, speculates, sosa, in,\n",
"Nearest to state: esoteric, glaring, presidents, vorarlberg, atmosphere, succeeding, lute, connie,\n",
"Nearest to on: upon, in, janis, during, torrey, against, infield, catalans,\n",
"Nearest to and: or, thirst, in, but, of, sobib, cleaves, including,\n",
"Nearest to eight: nine, six, four, seven, three, zero, five, one,\n",
"Nearest to they: we, there, he, you, it, these, who, i,\n",
"Nearest to more: less, most, deicide, faster, toed, very, skye, tonic,\n",
"Nearest to other: different, attackers, joachim, various, such, many, differentiation, these,\n",
"Average loss at step 32000 : 3.49501452419\n",
"Average loss at step 34000 : 3.48593705952\n",
"Average loss at step 36000 : 3.50112806576\n",
"Average loss at step"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 38000 : 3.49244426501\n",
"Average loss at step 40000 : 3.3890105716\n",
"Nearest to been: become, be, were, was, jolie, hausdorff, spotless, had,\n",
"Nearest to time: year, way, gleichschaltung, period, day, stanislav, stage, outcome,\n",
"Nearest to over: through, semigroup, rawlings, golden, about, brick, on, motorways,\n",
"Nearest to not: they, radiated, never, pki, still, omnipotent, hinayana, really,\n",
"Nearest to three: four, six, five, two, seven, eight, one, nine,\n",
"Nearest to if: when, before, where, then, bg, because, can, should,\n",
"Nearest to there: they, it, he, usually, this, typically, still, often,\n",
"Nearest to between: with, in, from, about, against, churchmen, johansen, presupposes,\n",
"Nearest to from: into, through, elphinstone, in, workshop, between, suing, under,\n",
"Nearest to state: esoteric, presidents, atmosphere, vorarlberg, lute, succeeding, glaring, didactic,\n",
"Nearest to on: upon, at, in, during, unitarians, under, catalans, batavians,\n",
"Nearest to and: or, but, s, incapacitation, including, while, of, which,\n",
"Nearest to eight: nine, six, seven, four, five, three, one, two,\n",
"Nearest to they: we, he, there, you, she, i, not, it,\n",
"Nearest to more: less, most, deicide, toed, greater, faster, quite, longer,\n",
"Nearest to other: various, different, attackers, joachim, clutter, nz, trochaic, apulia,\n",
"Average loss at step 42000 : 3.45294014364\n",
"Average loss at step 44000 : 3.47660055941\n",
"Average loss at step 46000 : 3.47458503014\n",
"Average loss at step 48000 : 3.47261548793\n",
"Average loss at step 50000 : 3.45390708435\n",
"Nearest to been: become, be, had, was, were, hausdorff, prem, remained,\n",
"Nearest to time: way, year, period, stv, day, gleichschaltung, stage, outcome,\n",
"Nearest to over: through, golden, semigroup, about, brick, counternarcotics, theremin, mattingly,\n",
"Nearest to not: they, still, never, really, sometimes, it, kiwifruit, nearly,\n",
"Nearest to three: five, four, six, seven, two, eight, one, nine,\n",
"Nearest to if: when, before, where, because, connexion, though, so, whether,\n",
"Nearest to there: they, it, he, this, now, often, usually, still,\n",
"Nearest to between: with, from, fashioned, churchmen, panasonic, explores, within, racial,\n",
"Nearest to from: into, through, under, elphinstone, between, workshop, circumpolar, idiom,\n",
"Nearest to state: atmosphere, vorarlberg, esoteric, presidents, madhya, majority, moulin, bowmen,\n",
"Nearest to on: upon, in, catalans, tezuka, minotaurs, wakefulness, batavians, guglielmo,\n",
"Nearest to and: or, but, thirst, signifier, which, however, including, unattractive,\n",
"Nearest to eight: six, nine, seven, five, four, three, zero, two,\n",
"Nearest to they: we, there, he, you, it, she, these, not,\n",
"Nearest to more: less, most, quite, very, further, faster, toed, deicide,\n",
"Nearest to other: various, different, many, attackers, are, joachim, nihilo, reject,\n",
"Average loss at step 52000 : 3.43597227755\n",
"Average loss at step 54000 : 3.25126817495\n",
"Average loss at step 56000 : 3.35102432287\n",
"Average loss at step 58000 : 3.44654818082\n",
"Average loss at step 60000 : 3.4287913968\n",
"Nearest to been: become, be, was, prem, had, remained, hadad, stanislavsky,\n",
"Nearest to time: year, way, period, stv, barely, name, stage, restoring,\n",
"Nearest to over: about, through, golden, adaption, counternarcotics, up, mattingly, brick,\n",
"Nearest to not: still, never, nor, kiwifruit, they, nearly, therefore, rarely,\n",
"Nearest to three: two, five, four, six, seven, eight, one, nine,\n",
"Nearest to if: when, though, before, where, although, because, can, could,\n",
"Nearest to there: they, it, he, still, she, we, this, often,\n",
"Nearest to between: with, from, churchmen, among, ethical, within, vma, panasonic,\n",
"Nearest to from: through, into, under, during, between, in, suing, across,\n",
"Nearest to state: atmosphere, infringe, madhya, vorarlberg, government, bowmen, vargas, republic,\n",
"Nearest to on: upon, through, within, ridiculous, janis, in, under, over,\n",
"Nearest to and: or, while, including, but, of, like, whose, bannister,\n",
"Nearest to eight: nine, six, five, four, seven, zero, three, two,\n",
"Nearest to they: we, there, you, he, it, these, she, prisons,\n",
"Nearest to more: less, most, quite, further, toed, very, faster, rather,\n",
"Nearest to other: different, various, many, nihilo, these, amour, including, screenplays,\n",
"Average loss at step 62000 : 3.38358767056\n",
"Average loss at step 64000 : 3.41693099326\n",
"Average loss at step 66000 : 3.39588000977\n",
"Average loss at step 68000 : 3.35567189544\n",
"Average loss at step 70000 : 3.38878934443\n",
"Nearest to been: become, be, was, prem, remained, were, being, discounts,\n",
"Nearest to time: year, way, day, period, barely, ethos, stage, reason,\n",
"Nearest to over: about, through, fortunately, semigroup, theremin, off, loudest, up,\n",
"Nearest to not: still, nor, never, they, actually, nearly, unelected, therefore,\n",
"Nearest to three: five, two, four, six, seven, eight, nine, zero,\n",
"Nearest to if: when, though, before, where, because, then, after, since,\n",
"Nearest to there: they, it, he, often, she, we, usually, still,\n",
"Nearest to between: among, with, within, from, ethical, churchmen, racial, prentice,\n",
"Nearest to from: through, into, within, during, under, until, between, across,\n",
"Nearest to state: city, atmosphere, desks, surrounding, preservation, bohr, principal, republic,\n",
"Nearest to on: upon, tezuka, through, within, wakefulness, catalans, at, ingeborg,\n",
"Nearest to and: or, but, while, including, thirst, jerzy, massing, abadan,\n",
"Nearest to eight: seven, six, nine, five, four, three, two, zero,\n",
"Nearest to they: we, you, he, there, she, it, prisons, who,\n",
"Nearest to more: less, most, quite, very, faster, smaller, further, larger,\n",
"Nearest to other: various, different, some, screenplays, lab, many, including, debugging,\n",
"Average loss at step 72000 : 3.41103189731\n",
"Average loss at step 74000 : 3.44926435578\n",
"Average loss at step 76000 : 3.4423020488\n",
"Average loss at step 78000 : 3.41976813722\n",
"Average loss at step 80000 : 3.39511853886\n",
"Nearest to been: become, be, remained, was, grown, were, prem, already,"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Nearest to time: year, way, period, reason, barely, distance, stage, day,\n",
"Nearest to over: about, fortunately, through, semigroup, further, mattingly, rawlings, golden,\n",
"Nearest to not: still, they, nor, never, we, kiwifruit, noaa, really,\n",
"Nearest to three: five, two, seven, four, eight, six, nine, zero,\n",
"Nearest to if: when, where, though, before, since, because, although, follows,\n",
"Nearest to there: they, it, he, we, she, still, typically, actually,\n",
"Nearest to between: with, among, within, in, racial, around, from, serapeum,\n",
"Nearest to from: into, through, in, within, under, using, during, towards,\n",
"Nearest to state: city, atmosphere, ferro, vorarlberg, surrounding, republic, madhya, national,\n",
"Nearest to on: upon, poll, in, from, tezuka, janis, through, within,\n",
"Nearest to and: or, but, including, while, s, which, thirst, although,\n",
"Nearest to eight: nine, seven, six, five, four, three, zero, two,\n",
"Nearest to they: we, you, there, he, she, it, these, not,\n",
"Nearest to more: less, most, smaller, very, faster, quite, rather, larger,\n",
"Nearest to other: various, different, joachim, including, theos, smaller, individual, screenplays,\n",
"Average loss at step 82000 : 3.40933967865\n",
"Average loss at step 84000 : 3.41618054378\n",
"Average loss at step 86000 : 3.31485116804\n",
"Average loss at step 88000 : 3.37068593091\n",
"Average loss at step 90000 : 3.2785516749\n",
"Nearest to been: become, be, was, prem, remained, grown, recently, already,\n",
"Nearest to time: year, way, period, day, barely, battle, buds, name,\n",
"Nearest to over: through, about, fortunately, off, theremin, semigroup, extraterrestrial, mattingly,\n",
"Nearest to not: nor, still, never, otherwise, generally, separately, gown, hydrate,\n",
"Nearest to three: four, five, six, two, eight, seven, nine, zero,\n",
"Nearest to if: when, where, before, though, because, since, then, while,\n",
"Nearest to there: they, it, he, we, she, still, typically, fiorello,\n",
"Nearest to between: with, among, within, from, churchmen, prentice, racial, panasonic,\n",
"Nearest to from: through, into, across, during, towards, until, at, within,\n",
"Nearest to state: bohr, city, atmosphere, ferro, bowmen, republic, retaliation, vorarlberg,\n",
"Nearest to on: upon, in, tezuka, at, during, within, via, catalans,\n",
"Nearest to and: or, including, but, while, like, thirst, with, schuman,\n",
"Nearest to eight: seven, nine, six, five, four, three, zero, two,\n",
"Nearest to they: we, there, he, you, she, it, prisons, these,\n",
"Nearest to more: less, most, very, faster, larger, quite, smaller, better,\n",
"Nearest to other: different, various, tamara, prosthetic, including, individual, failing, restaurants,\n",
"Average loss at step 92000 : 3.40355363208\n",
"Average loss at step 94000 : 3.35647508007\n",
"Average loss at step 96000 : 3.34374570692\n",
"Average loss at step 98000 : 3.4230104093\n",
"Average loss at step 100000 : 3.36909827\n",
"Nearest to been: become, be, grown, was, being, already, remained, prem,\n",
"Nearest to time: way, year, day, period, years, days, mothersbaugh, separators,\n",
"Nearest to over: through, about, semigroup, further, fortunately, off, into, theremin,\n",
"Nearest to not: never, nor, still, dieppe, really, unelected, actually, now,\n",
"Nearest to three: four, two, five, seven, six, eight, nine, zero,\n",
"Nearest to if: when, though, where, before, is, abe, then, follows,\n",
"Nearest to there: they, it, he, we, still, she, typically, often,\n",
"Nearest to between: within, with, among, churchmen, around, explores, from, reactance,\n",
"Nearest to from: into, through, within, across, in, between, using, workshop,\n",
"Nearest to state: atmosphere, bohr, national, ferro, germ, desks, city, unpaid,\n",
"Nearest to on: upon, in, within, tezuka, janis, batavians, about, macrocosm,\n",
"Nearest to and: or, but, purview, thirst, sukkot, epr, including, honesty,\n",
"Nearest to eight: seven, nine, six, four, five, three, zero, one,\n",
"Nearest to they: we, there, you, he, she, prisons, it, these,\n",
"Nearest to more: less, most, very, quite, faster, larger, rather, smaller,\n",
"Nearest to other: various, different, tamara, theos, some, cope, many, others,\n"
]
}
],
"source": [
"num_steps = 100001\n",
"\n",
"with tf.Session(graph=graph) as session:\n",
" tf.global_variables_initializer().run()\n",
" print('Initialized')\n",
" average_loss = 0\n",
" for step in range(num_steps):\n",
" batch_data, batch_labels = generate_batch(\n",
" batch_size, num_skips, skip_window)\n",
" feed_dict = {train_dataset : batch_data, train_labels : batch_labels}\n",
" _, l = session.run([optimizer, loss], feed_dict=feed_dict)\n",
" average_loss += l\n",
" if step % 2000 == 0:\n",
" if step > 0:\n",
" average_loss = average_loss / 2000\n",
" # The average loss is an estimate of the loss over the last 2000 batches.\n",
" print('Average loss at step %d: %f' % (step, average_loss))\n",
" average_loss = 0\n",
" # note that this is expensive (~20% slowdown if computed every 500 steps)\n",
" if step % 10000 == 0:\n",
" sim = similarity.eval()\n",
" for i in range(valid_size):\n",
" valid_word = reverse_dictionary[valid_examples[i]]\n",
" top_k = 8 # number of nearest neighbors\n",
" nearest = (-sim[i, :]).argsort()[1:top_k+1]\n",
" log = 'Nearest to %s:' % valid_word\n",
" for k in range(top_k):\n",
" close_word = reverse_dictionary[nearest[k]]\n",
" log = '%s %s,' % (log, close_word)\n",
" print(log)\n",
" final_embeddings = normalized_embeddings.eval()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "jjJXYA_XzV79"
},
"outputs": [],
"source": [
"num_points = 400\n",
"\n",
"tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000, method='exact')\n",
"two_d_embeddings = tsne.fit_transform(final_embeddings[1:num_points+1, :])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "both",
"id": "o_e0D_UezcDe"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3MAAANpCAYAAAChBGCHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdAldUfx/H3BdlbQEVzoyDukZaae5aZ5tbcIzUz9x5Z\njhwNNXMVztTExFHqT9Ny50hFc+ZKEVBwAbLh/v4gSXILChc/r3+69/Lc53yfewL8cM5zjsFoNBoR\nERERERERk2KW0QWIiIiIiIjI01OYExERERERMUEKcyIiIiIiIiZIYU5ERERERMQEKcyJiIiIiIiY\nIIU5ERERERERE5TmMBceHk7fvn1p2LAhb775JgEBAdy6dYvOnTtTv359unTpQnh4eHrUKiIiIiIi\nIv8wpHWfuaFDh/Lqq6/SvHlzEhISiI6OZvbs2bi4uNC9e3fmzZtHeHg4gwYNSq+aRUREREREXnpp\nGpmLiIjg4MGDNG/eHIBs2bLh4ODAtm3baNq0KQBNmzbll19+SXulIiIiIiIikiJbWt4cGBhI9uzZ\nGT58OKdOnaJ48eKMGDGC69ev4+bmBoCbmxvXr19Pl2JFREREREQkWZpG5hISEjhx4gRt2rTB398f\nGxsb5s2bl+oYg8GAwWBIU5EiIiIiIiKSWprCXK5cuciZMyelSpUCoH79+pw4cQI3NzdCQ0MBuHbt\nGtmzZ3/kedJ4256IiIiIiMhLJ03TLN3d3fHw8ODChQsULFiQvXv34unpiaenJ/7+/vTo0YM1a9ZQ\np06dR57HYDAQGhqRllIkE3N3d1D/ZmHq36xLfZu1qX+zLvVt1qb+zbrc3R2e+j1pCnMAo0ePZtCg\nQcTHx5MvXz4mTZpEYmIi/fr148cffyRPnjx89dVXaW1GRERERERE7pHmMOft7c2PP/543+sLFy5M\n66lFRERERETkIdK8abiIiIiIiIi8eApzIiIiIiIiJkhhTkRERERExAQpzImIiIiIiJgghTkRERER\nERETpDAnIiIiIiJighTmRERERERETJDCnIiIiIiIiAlSmBMRERERETFBCnMiIiIiIiImSGFORERE\nRETEBCnMiYiIiIiImCCFOREREREREROkMCciIiIiImKCFOZERERERERMkMKciIiIiIiICVKYExER\nERERMUEKcyIiIiIiIiZIYU5ERERERMQEKcyJiIiIiIiYIIU5ERERERERE6QwJyIiIiIiYoIU5kRE\nREREREyQwpyIiIiIiIgJUpgTERERERExQQpzIiIiIiIiJkhhTkRERERExAQpzImIiIiIiJgghTkR\nERERERETpDAnIiIiIiJighTmRERERERETJDCnIiIiIiIiAlSmBMRERERETFBCnMiIiIiIiImSGFO\nRERERETEBCnMiYiIiIiImCCFOREREREREROkMCciIiIiImKCFOZERERERERMkMKciIiIiIiICVKY\nExERERERMUEKcyIiIiIiIiZIYU5ERERERMQEKcyJiIiIiIiYIIU5ERERERERE6QwJyIiIiIiYoIU\n5kREREREREyQwpyIiIiIiIgJUpgTERERERExQQpzIiIiIiIiJkhhTkRERERExAQpzImIiIiIiJgg\nhTkRERERERETpDAnIiIiIiJighTmRERERERETJDCnIiIiIiIiAlSmBMRERERETFBCnMiIiIiIiIm\nSGFORERERETEBCnMiYiIiIiImCCFOREREREREROkMCciIiIiImKCFOZERERERERMkMKciIiIiIiI\nCVKYExERERERMUEKcyIiIiIiIiZIYU5ERERERMQEKcyJiIiIiIiYIIU5ERERERERE6QwJyIiIiIi\nYoIU5kREREREREyQwpyIiIiIiIgJUpgTERERERExQQpzIiIiIiIiJkhhTkRERERExAQpzImIiIiI\niJgghTkRERERERETpDAnIiIiIiJighTmRERERERETJDCnIiIiIiIiAlSmBMRERERETFBCnMiIiIi\nIiImSGFORERERETEBCnMiYiIiIiImCCFOREREREREROULaMLEBERkcxnxYqlbNiwHoBGjZpQrVoN\nBg78kFKlyvLnnwG4u+dg0qTPsbKy4sqVQL74Ygq3bt3E2tqaoUNHki9fgYy9ABGRl4BG5kRERCSV\nU6dOsnHjT8yfv4i5cxeyfr0/ERHhBAZeplmzlixZshJ7ewe2b98GwJQpE+jffzDffbeE3r0/4vPP\nJ2fwFYiIvBw0MiciIiKpHD16hGrVamJlZQ1A9eq1CAg4jIdHHjw9iwDg5eVNcHAQ0dHRHDt2lNGj\nh6a8Pz4+IUPqFhF52SjMiYiISCoGg+GBr1taWqQ8NjMzJykpDqMxCQcHBxYsWPaiyhMRkX9omqWI\niIikUrp0GXbs+I3Y2Biio6PZseNXSpcue99xRqMRW1s7cufOza+//pLy2tmzf73okkVEXkoamRMR\n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\ntt/uu1FQ2bDhLEFBPQExoMrp093Yu/ckLi7/y/djfWxO5s2bN9i8eT0gx9KyEiNGjEVNTQ0Xl9Y0\nauTEpUsXSEh4J9yiq6tLr159cHRsDLz7jsXERHPunCKgmj17AdOmTSQlJQWAUaPGY2VlQ9++PYmI\neMy4cSNo2bINwcFBbNu2mTlzFhAf/5axY4cTHR2NpqYWDx7cx9m5FdHRUcyc6Z2jR+GX8PBhJMuX\nh5CRIaZLl7LY22d9efCz/WYICHwJX2faIiAgIPAfYsaMtqxaFcK0aTvZtcvim86XyzQmNzcvz+rV\ny1i/fg0tWrThyJFDnDhxJJtJup1ddfbs2cWsWdOUfXxokr5u3RbWrduCv/82fH0XK9t9yiQ90+Kh\nYPBzeZaWKlWa3bt30L27K4mJibi4uDFt2mxWrFhMz55d6dWrK7dv3/jo/rq6elhZ2TB+/BRiYqLx\n919DerqU4cMV3mdt2rTj4cP7tGjRmEOH9pGQkMjz58/Q0dFFXV0DH5+pnDlzSilYkUlmiaa9vT2g\nKNHM5MqVixw+fIBevbrSr19P4uPfEhn5FJFIRKVKVShc2ASRSET58hWJiYnh8uWbpKVpkXlvYmIa\nsW/fgxzPJzExkd27d37RtXRxaU18/Nsv2vdX5enTCDp0cGXTpgB0dHTYunUTM2d6M3XqLPbt24dM\nJlNeb5FIhJ6eHv7+2+jYsRMLF85Xrs9K9u+YkZERCxYsxc9vE97eM/nzT0Wpd//+g7GxsWPdui10\n6tQ1yz5r167EwqIS/v5b6ddvINOnTwIUnnuXLoVQpkxr5s5dxLp1qz86p+5zvH79hp49b+Lv78bG\nja707fuasLDHnz0fAYFfDSEzJyAgIJBLRCIRrVo5fJdjFRST9IJIcnIyY8eOICEhHplMym+/9ade\nvYZs2bIBdXV1XFzcWLRoPg8e3GfhwuVcvXqFAwf+UqrnfS/EYjETJ2Y9ZoUKFVmyZFW2tosXr8yy\n7Orahb//Pq3cZ9iwUezatYPw8LtKURszs5I0auSUo4rf6tX+BAVd5vTpEwQG7mDhwuXZ2mTyoRCF\nl9coatSonWVdcHBQlkBfLFZBJpNSpIghItH7D+MS9D6irJ2QEM/u3QG0b++SbZtUqigJ/BCZTIZY\nLM5xrlRBw929Pvv3r/+3zFKGo+MW2rbNfq75xYdzMtevX0Px4maUKFESUJQlBgbuoFOnLgA0adJM\n+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
gitextract_a1tly3__/
├── .gitignore
├── AUTHORS
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── __init__.py
├── courses/
│ ├── udacity_deep_learning/
│ │ ├── .gitignore
│ │ ├── 1_notmnist.ipynb
│ │ ├── 2_fullyconnected.ipynb
│ │ ├── 3_regularization.ipynb
│ │ ├── 4_convolutions.ipynb
│ │ ├── 5_word2vec.ipynb
│ │ ├── 6_lstm.ipynb
│ │ ├── Dockerfile
│ │ └── README.md
│ ├── udacity_intro_to_tensorflow_for_deep_learning/
│ │ ├── l01c01_introduction_to_colab_and_python.ipynb
│ │ ├── l02c01_celsius_to_fahrenheit.ipynb
│ │ ├── l03c01_classifying_images_of_clothing.ipynb
│ │ ├── l04c01_image_classification_with_cnns.ipynb
│ │ ├── l05c01_dogs_vs_cats_without_augmentation.ipynb
│ │ ├── l05c02_dogs_vs_cats_with_augmentation.ipynb
│ │ ├── l05c03_exercise_flowers_with_data_augmentation.ipynb
│ │ ├── l05c04_exercise_flowers_with_data_augmentation_solution.ipynb
│ │ ├── l06c01_tensorflow_hub_and_transfer_learning.ipynb
│ │ ├── l06c02_exercise_flowers_with_transfer_learning.ipynb
│ │ ├── l06c03_exercise_flowers_with_transfer_learning_solution.ipynb
│ │ ├── l07c01_saving_and_loading_models.ipynb
│ │ ├── l08c01_common_patterns.ipynb
│ │ ├── l08c02_naive_forecasting.ipynb
│ │ ├── l08c03_moving_average.ipynb
│ │ ├── l08c04_time_windows.ipynb
│ │ ├── l08c05_forecasting_with_machine_learning.ipynb
│ │ ├── l08c06_forecasting_with_rnn.ipynb
│ │ ├── l08c07_forecasting_with_stateful_rnn.ipynb
│ │ ├── l08c08_forecasting_with_lstm.ipynb
│ │ ├── l08c09_forecasting_with_cnn.ipynb
│ │ ├── l09c01_nlp_turn_words_into_tokens.ipynb
│ │ ├── l09c02_nlp_padding.ipynb
│ │ ├── l09c03_nlp_prepare_larger_text_corpus.ipynb
│ │ ├── l09c04_nlp_embeddings_and_sentiment.ipynb
│ │ ├── l09c05_nlp_tweaking_the_model.ipynb
│ │ ├── l09c06_nlp_subwords.ipynb
│ │ ├── l10c01_nlp_lstms_with_reviews_subwords_dataset.ipynb
│ │ ├── l10c02_nlp_multiple_models_for_predicting_sentiment.ipynb
│ │ ├── l10c03_nlp_constructing_text_generation_model.ipynb
│ │ └── l10c04_nlp_optimizing_the_text_generation_model.ipynb
│ └── udacity_intro_to_tensorflow_lite/
│ ├── tflite_c01_linear_regression.ipynb
│ ├── tflite_c02_transfer_learning.ipynb
│ ├── tflite_c03_exercise_convert_model_to_tflite.ipynb
│ ├── tflite_c04_exercise_convert_model_to_tflite_solution.ipynb
│ ├── tflite_c05_exercise_rock_paper_scissors.ipynb
│ └── tflite_c06_exercise_rock_paper_scissors_solution.ipynb
├── lite/
│ ├── .gitignore
│ ├── README.md
│ ├── codelabs/
│ │ ├── digit_classifier/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── finish/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ │ └── lite/
│ │ │ │ │ │ │ └── codelabs/
│ │ │ │ │ │ │ └── digitclassifier/
│ │ │ │ │ │ │ ├── DigitClassifier.kt
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ │ ├── layout/
│ │ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── gradlew
│ │ │ │ │ ├── gradlew.bat
│ │ │ │ │ └── settings.gradle
│ │ │ │ └── start/
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── codelabs/
│ │ │ │ │ │ └── digitclassifier/
│ │ │ │ │ │ ├── DigitClassifier.kt
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── step2_train_ml_model.ipynb
│ │ │ └── step7_improve_accuracy.ipynb
│ │ └── flower_classification/
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── finish/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── ClassifierTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── ADD_TFLITE_MODEL_HERE
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ │ ├── CameraConnectionFragment.java
│ │ │ │ │ │ ├── ClassifierActivity.java
│ │ │ │ │ │ ├── LegacyCameraConnectionFragment.java
│ │ │ │ │ │ ├── customview/
│ │ │ │ │ │ │ ├── AutoFitTextureView.java
│ │ │ │ │ │ │ ├── OverlayView.java
│ │ │ │ │ │ │ ├── RecognitionScoreView.java
│ │ │ │ │ │ │ └── ResultsView.java
│ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ ├── BorderedText.java
│ │ │ │ │ │ │ ├── ImageUtils.java
│ │ │ │ │ │ │ └── Logger.java
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ ├── Classifier.java
│ │ │ │ │ │ └── ClassifierFloatMobileNet.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ │ ├── ic_baseline_remove.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── rectangle.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_ic_activity_camera.xml
│ │ │ │ │ │ ├── tfe_ic_camera_connection_fragment.xml
│ │ │ │ │ │ └── tfe_ic_layout_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── start/
│ │ │ ├── .gitignore
│ │ │ ├── app/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── classification/
│ │ │ │ │ └── ClassifierTest.java
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── ADD_TFLITE_MODEL_HERE
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── classification/
│ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ ├── CameraConnectionFragment.java
│ │ │ │ │ ├── ClassifierActivity.java
│ │ │ │ │ ├── LegacyCameraConnectionFragment.java
│ │ │ │ │ ├── customview/
│ │ │ │ │ │ ├── AutoFitTextureView.java
│ │ │ │ │ │ ├── OverlayView.java
│ │ │ │ │ │ ├── RecognitionScoreView.java
│ │ │ │ │ │ └── ResultsView.java
│ │ │ │ │ ├── env/
│ │ │ │ │ │ ├── BorderedText.java
│ │ │ │ │ │ ├── ImageUtils.java
│ │ │ │ │ │ └── Logger.java
│ │ │ │ │ └── tflite/
│ │ │ │ │ ├── Classifier.java
│ │ │ │ │ └── ClassifierFloatMobileNet.java
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ ├── ic_baseline_remove.xml
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── rectangle.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── tfe_ic_activity_camera.xml
│ │ │ │ │ ├── tfe_ic_camera_connection_fragment.xml
│ │ │ │ │ └── tfe_ic_layout_bottom_sheet.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ └── ml/
│ │ └── Flower_Classification_with_TFLite_Model_Maker.ipynb
│ ├── examples/
│ │ ├── acceleration_service/
│ │ │ └── android_play_services/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── accelerationservice/
│ │ │ │ │ ├── CustomValidationTest.java
│ │ │ │ │ └── NoopLogger.java
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── accelerationservice/
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── logger/
│ │ │ │ │ │ ├── Logger.java
│ │ │ │ │ │ └── TextViewLogger.java
│ │ │ │ │ ├── model/
│ │ │ │ │ │ ├── AssetModel.java
│ │ │ │ │ │ ├── AssetModelFactory.java
│ │ │ │ │ │ ├── MobileNetV1.java
│ │ │ │ │ │ └── PlainAddition.java
│ │ │ │ │ └── validator/
│ │ │ │ │ └── MeanSquaredErrorValidator.java
│ │ │ │ └── res/
│ │ │ │ ├── layout/
│ │ │ │ │ └── activity_main.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── proguard.pgcfg
│ │ │ └── settings.gradle
│ │ ├── audio_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── audio/
│ │ │ │ │ │ ├── AudioClassificationHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── fragments/
│ │ │ │ │ │ │ ├── AudioFragment.kt
│ │ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ └── ProbabilitiesAdapter.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── controls_bottom_sheet.xml
│ │ │ │ │ │ ├── fragment_audio.xml
│ │ │ │ │ │ └── item_probability.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── AudioClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AccentColor.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── icn_chevron_down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── icn_chevron_up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── HomeViewController.swift
│ │ │ │ │ ├── InferenceView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── ResultTableViewCell.swift
│ │ │ │ │ └── TFLite/
│ │ │ │ │ └── AudioClassificationHelper.swift
│ │ │ │ ├── AudioClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth.csv
│ │ │ └── utils.py
│ │ ├── bert_qa/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── bertqa/
│ │ │ │ │ │ └── BertQaHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── bertqa/
│ │ │ │ │ │ ├── BertQaHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── dataset/
│ │ │ │ │ │ │ ├── DataSet.kt
│ │ │ │ │ │ │ └── LoadDataSetClient.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── DatasetAdapter.kt
│ │ │ │ │ │ ├── DatasetFragment.kt
│ │ │ │ │ │ ├── QaAdapter.kt
│ │ │ │ │ │ └── QaFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_question_items.xml
│ │ │ │ │ │ ├── ic_ask_active.xml
│ │ │ │ │ │ ├── ic_ask_inactive.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_dataset.xml
│ │ │ │ │ │ ├── fragment_qa.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ ├── item_dataset.xml
│ │ │ │ │ │ └── item_question.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── BertQA.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── BertQACore/
│ │ │ │ ├── Constants.swift
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── DataExtension.swift
│ │ │ │ │ ├── StringExtension.swift
│ │ │ │ │ └── UnicodeScalarExtension.swift
│ │ │ │ └── Models/
│ │ │ │ ├── Dataset.swift
│ │ │ │ ├── FileLoader.swift
│ │ │ │ ├── ML/
│ │ │ │ │ ├── BertQAHandler.swift
│ │ │ │ │ ├── ContentData.swift
│ │ │ │ │ ├── InputFeatures.swift
│ │ │ │ │ └── Result.swift
│ │ │ │ └── Tokenizers/
│ │ │ │ ├── BasicTokenizer.swift
│ │ │ │ ├── FullTokenizer.swift
│ │ │ │ └── WordpieceTokenizer.swift
│ │ │ ├── BertQATests/
│ │ │ │ ├── ExtensionTest/
│ │ │ │ │ ├── StringExtensionTest.swift
│ │ │ │ │ └── UnicodeScalarExtensionTest.swift
│ │ │ │ ├── Info.plist
│ │ │ │ ├── MLTest/
│ │ │ │ │ └── BertQAHandlerTest.swift
│ │ │ │ └── TokenizerTest/
│ │ │ │ ├── BasicTokenizerTest.swift
│ │ │ │ ├── FullTokenizerTest.swift
│ │ │ │ └── WordpieceTokenizerTest.swift
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── RunScripts/
│ │ │ │ └── download_resources.sh
│ │ │ ├── ViewInSwiftUI/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ └── LaunchScreen.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── KeyboardHeightObserver.swift
│ │ │ │ ├── SceneDelegate.swift
│ │ │ │ └── Views/
│ │ │ │ ├── ContentView.swift
│ │ │ │ ├── DatasetDetailView.swift
│ │ │ │ ├── DatasetListView.swift
│ │ │ │ ├── StatusView.swift
│ │ │ │ └── SuggestedQuestionsView.swift
│ │ │ └── ViewInUIKit/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj/
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Controllers/
│ │ │ │ ├── DataSetDetailViewController.swift
│ │ │ │ ├── DataSetsTableViewController.swift
│ │ │ │ ├── OptionTableViewController.swift
│ │ │ │ └── OptionViewController.swift
│ │ │ ├── Info.plist
│ │ │ └── Views/
│ │ │ ├── ControlPanelView.swift
│ │ │ ├── DataSetTitleCell.swift
│ │ │ └── SuggestedQuestionButton.swift
│ │ ├── classification_by_retrieval/
│ │ │ ├── .bazelrc
│ │ │ ├── .bazelversion
│ │ │ ├── README.md
│ │ │ ├── WORKSPACE
│ │ │ ├── ios/
│ │ │ │ ├── BUILD
│ │ │ │ ├── ImageClassifierBuilder/
│ │ │ │ │ ├── Album.swift
│ │ │ │ │ ├── AlbumSelector.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── CameraView.swift
│ │ │ │ │ ├── CameraViewController.swift
│ │ │ │ │ ├── Classifier.h
│ │ │ │ │ ├── Classifier.mm
│ │ │ │ │ ├── Field.swift
│ │ │ │ │ ├── FileManager+Additions.swift
│ │ │ │ │ ├── ImageClassifierBuilderApp.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model.swift
│ │ │ │ │ ├── ModelCreationView.swift
│ │ │ │ │ ├── ModelData.swift
│ │ │ │ │ ├── ModelInfoView.swift
│ │ │ │ │ ├── ModelList.swift
│ │ │ │ │ ├── ModelMetadata.swift
│ │ │ │ │ ├── ModelTrainer.swift
│ │ │ │ │ ├── ModelTrainerView.swift
│ │ │ │ │ ├── ModelTrainingUtils.h
│ │ │ │ │ ├── ModelTrainingUtils.mm
│ │ │ │ │ ├── ModelVisualizer.swift
│ │ │ │ │ ├── NSData+PixelBuffer.h
│ │ │ │ │ ├── NSData+PixelBuffer.m
│ │ │ │ │ ├── NSString+AbseilStringView.h
│ │ │ │ │ ├── NSString+AbseilStringView.mm
│ │ │ │ │ ├── OnBoardingView.swift
│ │ │ │ │ ├── RuntimeError.swift
│ │ │ │ │ ├── ShareSheet.swift
│ │ │ │ │ ├── String+Identifiable.swift
│ │ │ │ │ ├── UIImage+CoreVideo.h
│ │ │ │ │ ├── UIImage+CoreVideo.mm
│ │ │ │ │ ├── UINavigationController+Additions.swift
│ │ │ │ │ └── VisualEffectView.swift
│ │ │ │ └── README.md
│ │ │ └── lib/
│ │ │ ├── BUILD
│ │ │ ├── labeled_image_helper.cc
│ │ │ ├── labeled_image_helper.h
│ │ │ ├── model_builder.cc
│ │ │ ├── model_builder.h
│ │ │ ├── tflite_builder.cc
│ │ │ ├── tflite_builder.h
│ │ │ ├── tflite_cbr_builder.cc
│ │ │ └── tflite_cbr_builder.h
│ │ ├── digit_classifier/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── digitclassification/
│ │ │ │ │ │ └── DigitClassificationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── digitclassification/
│ │ │ │ │ │ ├── DigitClassifierHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ └── DigitCanvasFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_digit_canvas.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── DigitClassifier/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── DigitClassifier.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLiteExtensions.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── DigitClassifier.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ └── README.md
│ │ │ └── ml/
│ │ │ └── mnist_tflite.ipynb
│ │ ├── generative_ai/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle.kts
│ │ │ │ ├── download.gradle
│ │ │ │ ├── libs/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── build_aar/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── build_aar.sh
│ │ │ │ │ └── tftext-2.12.patch
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── tensorflowdemo/
│ │ │ │ │ │ ├── DemoApplication.kt
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ └── autocomplete/
│ │ │ │ │ │ │ └── AutoCompleteService.kt
│ │ │ │ │ │ ├── di/
│ │ │ │ │ │ │ ├── appModule.kt
│ │ │ │ │ │ │ └── viewmodelModule.kt
│ │ │ │ │ │ ├── ui/
│ │ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── HeaderBar.kt
│ │ │ │ │ │ │ ├── screens/
│ │ │ │ │ │ │ │ └── autocomplete/
│ │ │ │ │ │ │ │ ├── AutoCompleteScreen.kt
│ │ │ │ │ │ │ │ ├── AutoCompleteViewModel.kt
│ │ │ │ │ │ │ │ └── components/
│ │ │ │ │ │ │ │ ├── AutoCompleteInfo.kt
│ │ │ │ │ │ │ │ ├── AutoCompleteTextField.kt
│ │ │ │ │ │ │ │ ├── TextControlBar.kt
│ │ │ │ │ │ │ │ └── WindowSizeSelection.kt
│ │ │ │ │ │ │ └── theme/
│ │ │ │ │ │ │ ├── Color.kt
│ │ │ │ │ │ │ ├── Shape.kt
│ │ │ │ │ │ │ ├── Theme.kt
│ │ │ │ │ │ │ └── Type.kt
│ │ │ │ │ │ └── util/
│ │ │ │ │ │ └── StringExt.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── header_background.xml
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── values/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── themes.xml
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── backup_rules.xml
│ │ │ │ │ └── data_extraction_rules.xml
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── google/
│ │ │ │ └── tensorflowdemo/
│ │ │ │ └── util/
│ │ │ │ └── StringExtKtTest.kt
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle/
│ │ │ │ └── libs.versions.toml
│ │ │ ├── gradle.properties
│ │ │ ├── how-to-build.md
│ │ │ ├── ml/
│ │ │ │ └── README.md
│ │ │ └── settings.gradle.kts
│ │ ├── gesture_classification/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── adding_metadata_to_tflite_model_colab_notebook.ipynb
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── gestureclassification/
│ │ │ │ │ │ └── GestureClassificationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── gestureclassification/
│ │ │ │ │ │ ├── GestureClassifierHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GestureClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── left.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── left_click.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── right.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── right_click.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── scroll_down.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── scroll_up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── selection_base.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── selection_base_default.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── up.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Cells/
│ │ │ │ │ │ ├── GestureCollectionViewCell.swift
│ │ │ │ │ │ └── InfoCell.swift
│ │ │ │ │ ├── Extension/
│ │ │ │ │ │ └── StringExtension.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── display_labels.txt
│ │ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ │ └── ModelDataHandler.swift
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── CurvedView.swift
│ │ │ │ ├── GestureClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_model.sh
│ │ │ ├── ml/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ └── tensorflowjs_to_tflite_colab_notebook.ipynb
│ │ │ └── web/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── controller_dataset.js
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── style.css
│ │ │ ├── ui.js
│ │ │ └── webcam.js
│ │ ├── image_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ └── ImageClassificationTest.kt
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── org/
│ │ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ │ └── lite/
│ │ │ │ │ │ │ └── examples/
│ │ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ │ ├── ImageClassifierHelper.kt
│ │ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ │ ├── ClassificationResultsAdapter.kt
│ │ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── color/
│ │ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ │ ├── layout/
│ │ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ │ ├── navigation/
│ │ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── dimens.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── test/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── imageclassification/
│ │ │ │ │ └── ExampleUnitTest.kt
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_java/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ └── ImageClassificationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imageclassification/
│ │ │ │ │ │ ├── ImageClassifierHelper.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.java
│ │ │ │ │ │ ├── ClassificationResultAdapter.java
│ │ │ │ │ │ └── PermissionsFragment.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification_result.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_play_services/
│ │ │ │ ├── .google/
│ │ │ │ │ └── packaging.yaml
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── InstrumentationTest.kt
│ │ │ │ │ ├── androidTestJava/
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── TestUtil.kt
│ │ │ │ │ ├── androidTestKotlin/
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ └── TestUtil.kt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ ├── CameraActivity.java
│ │ │ │ │ │ └── ImageClassificationHelper.java
│ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── kotlin/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── classification/
│ │ │ │ │ │ └── playservices/
│ │ │ │ │ │ ├── CameraActivity.kt
│ │ │ │ │ │ └── ImageClassificationHelper.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── labels_without_background.txt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ ├── ic_shutter.xml
│ │ │ │ │ │ ├── ic_shutter_focused.xml
│ │ │ │ │ │ ├── ic_shutter_normal.xml
│ │ │ │ │ │ ├── ic_shutter_pressed.xml
│ │ │ │ │ │ └── shape_rectangle.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_camera.xml
│ │ │ │ │ ├── layout-land/
│ │ │ │ │ │ └── activity_camera.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ImageClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── darkOrLight.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Storyboards/
│ │ │ │ │ │ └── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ └── ImageClassificationHelper.swift
│ │ │ │ │ └── ViewControllers/
│ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── ImageClassification.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ ├── metadata/
│ │ │ │ ├── README.md
│ │ │ │ ├── metadata_writer_for_image_classifier.py
│ │ │ │ └── requirements.txt
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ └── test_data/
│ │ │ └── ground_truth.csv
│ │ ├── image_segmentation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imagesegmentation/
│ │ │ │ │ │ └── ImageSegmentationHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── imagesegmentation/
│ │ │ │ │ │ ├── ImageSegmentationHelper.kt
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── ColorLabelsAdapter.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_color_labels.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_color_labels.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ImageSegmentation/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── photo_camera.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── photo_library.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ ├── ImageSegmentationHelper.swift
│ │ │ │ │ │ └── TFLiteExtension.swift
│ │ │ │ │ ├── UIKitExtension.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ ├── ImageSegmentation.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── ImageSegmentation.xcscheme
│ │ │ │ ├── Podfile
│ │ │ │ └── README.md
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── requirements.txt
│ │ │ ├── segment.py
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth_label.txt
│ │ │ └── utils.py
│ │ ├── model_personalization/
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── modelpersonalization/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── MainViewModel.kt
│ │ │ │ │ │ ├── TransferLearningHelper.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── HelperDialog.kt
│ │ │ │ │ │ ├── PermissionsFragment.kt
│ │ │ │ │ │ └── SettingFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── btn_big_gray.xml
│ │ │ │ │ │ ├── btn_big_green.xml
│ │ │ │ │ │ ├── btn_big_yellow.xml
│ │ │ │ │ │ ├── btn_default.xml
│ │ │ │ │ │ ├── btn_default_highlight.xml
│ │ │ │ │ │ ├── ic_baseline_settings.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ ├── ic_plus.xml
│ │ │ │ │ │ ├── tf_out_line.xml
│ │ │ │ │ │ └── toggle_widget_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── fragment_setting.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── transfer_learning/
│ │ │ ├── generate_training_model.py
│ │ │ └── requirements.txt
│ │ ├── native_api/
│ │ │ └── android_play_services/
│ │ │ ├── c_api/
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ └── instrumentation/
│ │ │ │ │ │ ├── BasicScenarioTest.java
│ │ │ │ │ │ └── TfLiteNativeGPUAccelerationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cpp/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── com_google_samples_gms_tflite_c_TfLiteJni.cc
│ │ │ │ │ │ ├── java_interop.h
│ │ │ │ │ │ └── logging_assert.h
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── TfLiteJni.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── cc_api/
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ ├── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── c/
│ │ │ │ │ │ └── instrumentation/
│ │ │ │ │ │ ├── BasicScenarioTest.java
│ │ │ │ │ │ └── TfLiteNativeGPUAccelerationTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cpp/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── Modules/
│ │ │ │ │ │ │ └── Findtflite_cc_api.cmake
│ │ │ │ │ │ ├── com_google_samples_gms_tflite_cc_TfLiteJni.cc
│ │ │ │ │ │ ├── java_interop.h
│ │ │ │ │ │ └── logging_assert.h
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── samples/
│ │ │ │ │ │ └── gms/
│ │ │ │ │ │ └── tflite/
│ │ │ │ │ │ └── cc/
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── TfLiteJni.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ └── tflite-java-extract-cpp-sdk.gradle
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── object_detection/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ └── TFObjectDetectionTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ObjectDetectorHelper.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── info_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── android_play_services/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_models.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ └── TFObjectDetectionTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── objectdetection/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ObjectDetectorHelper.kt
│ │ │ │ │ │ ├── OverlayView.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ └── PermissionsFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── color/
│ │ │ │ │ │ └── selector_ic.xml
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ └── info_bottom_sheet.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── ObjectDetection/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── down_icon.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── tfl_logo.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── up_icon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Camera Feed/
│ │ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ │ └── PreviewView.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── TFLite/
│ │ │ │ │ │ └── ObjectDetectionHelper.swift
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── OverlayView.swift
│ │ │ │ ├── ObjectDetection.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── detect.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── table_results.csv
│ │ │ └── utils.py
│ │ ├── optical_character_recognition/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── ocr/
│ │ │ │ │ ├── ImageUtils.kt
│ │ │ │ │ ├── MLExecutionViewModel.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ ├── ModelExecutionResult.kt
│ │ │ │ │ └── OCRModelExecutor.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bottom_sheet_bg.xml
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── rounded_edge.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── tfe_is_activity_main.xml
│ │ │ │ │ └── tfe_is_bottom_sheet_layout.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ ├── pose_estimation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ ├── image_credits.txt
│ │ │ │ │ │ │ └── pose_landmark_truth.csv
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── poseestimation/
│ │ │ │ │ │ ├── ml/
│ │ │ │ │ │ │ ├── EvaluationUtils.kt
│ │ │ │ │ │ │ ├── MovenetLightningTest.kt
│ │ │ │ │ │ │ ├── MovenetMultiPoseTest.kt
│ │ │ │ │ │ │ ├── MovenetThunderTest.kt
│ │ │ │ │ │ │ ├── PoseClassifierTest.kt
│ │ │ │ │ │ │ ├── PosenetTest.kt
│ │ │ │ │ │ │ └── VisualizationTest.kt
│ │ │ │ │ │ └── tracker/
│ │ │ │ │ │ ├── BoundingBoxTrackerTest.kt
│ │ │ │ │ │ └── KeyPointsTrackerTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── poseestimation/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── VisualizationUtils.kt
│ │ │ │ │ │ ├── YuvToRgbConverter.kt
│ │ │ │ │ │ ├── camera/
│ │ │ │ │ │ │ └── CameraSource.kt
│ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ ├── BodyPart.kt
│ │ │ │ │ │ │ ├── Device.kt
│ │ │ │ │ │ │ ├── KeyPoint.kt
│ │ │ │ │ │ │ ├── Person.kt
│ │ │ │ │ │ │ └── TorsoAndBodyDistance.kt
│ │ │ │ │ │ ├── ml/
│ │ │ │ │ │ │ ├── MoveNet.kt
│ │ │ │ │ │ │ ├── MoveNetMultiPose.kt
│ │ │ │ │ │ │ ├── PoseClassifier.kt
│ │ │ │ │ │ │ ├── PoseDetector.kt
│ │ │ │ │ │ │ └── PoseNet.kt
│ │ │ │ │ │ └── tracker/
│ │ │ │ │ │ ├── AbstractTracker.kt
│ │ │ │ │ │ ├── BoundingBoxTracker.kt
│ │ │ │ │ │ ├── KeyPointsTracker.kt
│ │ │ │ │ │ ├── Track.kt
│ │ │ │ │ │ └── TrackerConfig.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── rounded_edge.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ └── bottom_sheet_layout.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── themes.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── PoseEstimation/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Camera/
│ │ │ │ │ │ └── CameraFeedManager.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── ML/
│ │ │ │ │ │ ├── Extensions/
│ │ │ │ │ │ │ ├── CGSize+TFLite.swift
│ │ │ │ │ │ │ ├── CVPixelBuffer+TFLite.swift
│ │ │ │ │ │ │ └── Data+TFLite.swift
│ │ │ │ │ │ └── Models/
│ │ │ │ │ │ ├── MoveNet.swift
│ │ │ │ │ │ ├── PoseConfig.swift
│ │ │ │ │ │ ├── PoseData.swift
│ │ │ │ │ │ ├── PoseEstimator.swift
│ │ │ │ │ │ └── PoseNet.swift
│ │ │ │ │ └── UI/
│ │ │ │ │ ├── Storyboards/
│ │ │ │ │ │ └── Base.lproj/
│ │ │ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── ViewControllers/
│ │ │ │ │ │ └── ViewController.swift
│ │ │ │ │ └── Views/
│ │ │ │ │ └── OverlayView.swift
│ │ │ │ ├── PoseEstimation.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── PoseEstimation.xcscheme
│ │ │ │ ├── README.md
│ │ │ │ └── RunScripts/
│ │ │ │ └── download_models.sh
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── data.py
│ │ │ ├── labels.txt
│ │ │ ├── ml/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── classifier.py
│ │ │ │ ├── classifier_test.py
│ │ │ │ ├── movenet.py
│ │ │ │ ├── movenet_multipose.py
│ │ │ │ ├── movenet_multipose_test.py
│ │ │ │ ├── movenet_test.py
│ │ │ │ ├── posenet.py
│ │ │ │ └── posenet_test.py
│ │ │ ├── pose_estimation.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ ├── image_credits.txt
│ │ │ │ └── pose_landmark_truth.csv
│ │ │ ├── tracker/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bounding_box_tracker.py
│ │ │ │ ├── bounding_box_tracker_test.py
│ │ │ │ ├── config.py
│ │ │ │ ├── keypoint_tracker.py
│ │ │ │ ├── keypoint_tracker_test.py
│ │ │ │ └── tracker.py
│ │ │ ├── utils.py
│ │ │ └── visualizer.py
│ │ ├── posenet/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ └── ExampleInstrumentedTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ ├── CameraActivity.kt
│ │ │ │ │ │ ├── ConfirmationDialog.kt
│ │ │ │ │ │ ├── Constants.kt
│ │ │ │ │ │ ├── ImageUtils.kt
│ │ │ │ │ │ ├── PosenetActivity.kt
│ │ │ │ │ │ └── TestActivity.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_pn_activity_camera.xml
│ │ │ │ │ │ ├── tfe_pn_activity_posenet.xml
│ │ │ │ │ │ └── tfe_pn_activity_test.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ ├── posenet/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── posenet/
│ │ │ │ │ │ └── ExampleInstrumentedTest.java
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── posenet/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── Posenet.kt
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Podfile
│ │ │ ├── PoseNet/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Camera Feed/
│ │ │ │ │ ├── CameraFeedManager.swift
│ │ │ │ │ └── PreviewView.swift
│ │ │ │ ├── Cells/
│ │ │ │ │ └── InfoCell.swift
│ │ │ │ ├── Constants.swift
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── CGSizeExtension.swift
│ │ │ │ │ ├── CVPixelBufferExtension.swift
│ │ │ │ │ └── TFLiteExtension.swift
│ │ │ │ ├── Info.plist
│ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ └── ModelDataHandler.swift
│ │ │ │ ├── Storyboards/
│ │ │ │ │ └── Base.lproj/
│ │ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── ViewControllers/
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── Views/
│ │ │ │ └── OverlayView.swift
│ │ │ ├── PoseNet.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── README.md
│ │ │ └── RunScripts/
│ │ │ └── download_models.sh
│ │ ├── recommendation/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── config.json
│ │ │ │ │ │ ├── config_cnn_i10o100.json
│ │ │ │ │ │ ├── config_rnn_i10o100.json
│ │ │ │ │ │ ├── movie_genre_vocab.txt
│ │ │ │ │ │ └── sorted_movie_vocab.json
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── recommendation/
│ │ │ │ │ │ ├── Config.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ ├── MovieFragment.java
│ │ │ │ │ │ ├── MovieRecyclerViewAdapter.java
│ │ │ │ │ │ ├── RecommendationClient.java
│ │ │ │ │ │ ├── RecommendationFragment.java
│ │ │ │ │ │ ├── RecommendationRecyclerViewAdapter.java
│ │ │ │ │ │ └── data/
│ │ │ │ │ │ ├── FileUtil.java
│ │ │ │ │ │ └── MovieItem.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── tfe_re_activity_main.xml
│ │ │ │ │ │ ├── tfe_re_fragment_recommendation.xml
│ │ │ │ │ │ ├── tfe_re_fragment_recommendation_list.xml
│ │ │ │ │ │ ├── tfe_re_fragment_selection.xml
│ │ │ │ │ │ └── tfe_re_fragment_selection_list.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── configs/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── input-config.proto
│ │ │ │ ├── input_config_generated_pb2.py
│ │ │ │ ├── model_config.py
│ │ │ │ └── sample_input_config.pbtxt
│ │ │ ├── data/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── example_generation_movielens.py
│ │ │ │ └── example_generation_movielens_test.py
│ │ │ ├── model/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── context_encoder.py
│ │ │ │ ├── context_encoder_test.py
│ │ │ │ ├── dotproduct_similarity.py
│ │ │ │ ├── dotproduct_similarity_test.py
│ │ │ │ ├── input_pipeline.py
│ │ │ │ ├── input_pipeline_test.py
│ │ │ │ ├── label_encoder.py
│ │ │ │ ├── label_encoder_test.py
│ │ │ │ ├── losses.py
│ │ │ │ ├── losses_test.py
│ │ │ │ ├── metrics.py
│ │ │ │ ├── metrics_test.py
│ │ │ │ ├── recommendation_model.py
│ │ │ │ ├── recommendation_model_launcher.py
│ │ │ │ ├── recommendation_model_launcher_test.py
│ │ │ │ ├── recommendation_model_test.py
│ │ │ │ └── utils.py
│ │ │ ├── ondevice_recommendation.ipynb
│ │ │ └── requirements.txt
│ │ ├── reinforcement_learning/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── reinforcementlearning/
│ │ │ │ │ │ ├── BoardCellAdapter.java
│ │ │ │ │ │ ├── BoardCellStatus.java
│ │ │ │ │ │ ├── Constants.java
│ │ │ │ │ │ ├── HiddenBoardCellStatus.java
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ ├── PlaneStrikeAgent.java
│ │ │ │ │ │ ├── RLAgent.java
│ │ │ │ │ │ └── RLAgentFromTFAgents.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ └── activity_main.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ ├── README.md
│ │ │ ├── common.py
│ │ │ ├── tf_agents/
│ │ │ │ ├── planestrike_py_environment.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── training_tf_agents.py
│ │ │ └── tf_and_jax/
│ │ │ ├── gym_planestrike/
│ │ │ │ ├── gym_planestrike/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── envs/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── planestrike.py
│ │ │ │ └── setup.py
│ │ │ ├── requirements.txt
│ │ │ ├── training_jax.py
│ │ │ └── training_tf.py
│ │ ├── smart_reply/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── libs/
│ │ │ │ │ ├── .bazelrc
│ │ │ │ │ ├── .bazelversion
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── WORKSPACE
│ │ │ │ │ └── cc/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── DummyManifest.xml
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ └── BUILD
│ │ │ │ │ ├── ops/
│ │ │ │ │ │ ├── extract_feature.cc
│ │ │ │ │ │ ├── extract_feature_test.cc
│ │ │ │ │ │ ├── normalize.cc
│ │ │ │ │ │ ├── normalize_test.cc
│ │ │ │ │ │ ├── predict.cc
│ │ │ │ │ │ └── predict_test.cc
│ │ │ │ │ ├── predictor.cc
│ │ │ │ │ ├── predictor.h
│ │ │ │ │ ├── predictor_test.cc
│ │ │ │ │ ├── smartreply_jni.cc
│ │ │ │ │ └── testdata/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── smartreply_samples.tsv
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── backoff_response.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── smartreply/
│ │ │ │ │ ├── AssetsUtil.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── SmartReply.java
│ │ │ │ │ └── SmartReplyClient.java
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ └── tfe_sr_main_activity.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── how-to-build.md
│ │ │ └── settings.gradle
│ │ ├── sound_classification/
│ │ │ ├── README.md
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ ├── RunScripts/
│ │ │ │ │ └── download_models.sh
│ │ │ │ ├── SoundClassification/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── tfl2_logo_dark.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AudioInputManager.swift
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── labels.txt
│ │ │ │ │ ├── ProbabilityTableViewCell.swift
│ │ │ │ │ ├── SoundClassifier.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── SoundClassification.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── raspberry_pi/
│ │ │ ├── README.md
│ │ │ ├── classify.py
│ │ │ ├── requirements.txt
│ │ │ ├── setup.sh
│ │ │ ├── test_data/
│ │ │ │ └── ground_truth.csv
│ │ │ └── utils.py
│ │ ├── speech_commands/
│ │ │ ├── README.md
│ │ │ ├── ios/
│ │ │ │ ├── Podfile
│ │ │ │ ├── README.md
│ │ │ │ ├── RunScripts/
│ │ │ │ │ └── download_models.sh
│ │ │ │ ├── SpeechCommands/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── base.imageset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── border_color.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── inner_shadow_color.colorset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── tfl_logo.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AudioInputManager/
│ │ │ │ │ │ └── AudioInputManager.swift
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Cells/
│ │ │ │ │ │ ├── InfoCell.swift
│ │ │ │ │ │ └── WordCell.swift
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Model/
│ │ │ │ │ │ └── .gitignore
│ │ │ │ │ ├── ModelDataHandler/
│ │ │ │ │ │ ├── ModelDataHandler.swift
│ │ │ │ │ │ └── RecognizeCommands.swift
│ │ │ │ │ └── ViewControllers/
│ │ │ │ │ ├── InferenceViewController.swift
│ │ │ │ │ └── ViewController.swift
│ │ │ │ └── SpeechCommands.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── ml/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── callbacks.py
│ │ │ ├── classes.py
│ │ │ ├── download.py
│ │ │ ├── export/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── convert_keras_lite.py
│ │ │ │ ├── convert_keras_to_quantized.py
│ │ │ │ └── convert_tensorflow_lite.sh
│ │ │ ├── generator.py
│ │ │ ├── model.py
│ │ │ ├── requirements.txt
│ │ │ ├── train.py
│ │ │ └── utils.py
│ │ ├── speech_recognition/
│ │ │ └── android/
│ │ │ ├── app/
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ └── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradlew
│ │ │ └── gradlew.bat
│ │ ├── style_transfer/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── styletransfer/
│ │ │ │ │ │ └── StyleTransferHelperTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── styletransfer/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── MainViewModel.kt
│ │ │ │ │ │ ├── SingleLiveEvent.kt
│ │ │ │ │ │ ├── StyleTransferHelper.kt
│ │ │ │ │ │ └── fragments/
│ │ │ │ │ │ ├── CameraFragment.kt
│ │ │ │ │ │ ├── PermissionsFragment.kt
│ │ │ │ │ │ ├── StyleAdapter.kt
│ │ │ │ │ │ └── TransformationFragment.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── bg_item_style.xml
│ │ │ │ │ │ ├── bg_item_style_selected.xml
│ │ │ │ │ │ ├── decoration_divider.xml
│ │ │ │ │ │ ├── ic_baseline_camera_enhance.xml
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── fragment_camera.xml
│ │ │ │ │ │ ├── fragment_transformation.xml
│ │ │ │ │ │ └── item_style.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── nav_graph.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── style.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── StyleTransfer/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── photo_camera.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── photo_library.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style0.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style1.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style10.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style11.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style12.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style13.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style14.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style15.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style16.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style17.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style18.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style19.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style2.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style20.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style21.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style22.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style23.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style24.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style25.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style3.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style4.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style5.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style6.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style7.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── style8.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── style9.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── StylePickerViewController.swift
│ │ │ │ ├── StyleTransferer.swift
│ │ │ │ ├── TFLiteExtension.swift
│ │ │ │ ├── UIKitExtension.swift
│ │ │ │ └── ViewController.swift
│ │ │ ├── StyleTransfer.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ └── StyleTransfer.xcscheme
│ │ │ └── download_tflite_models.sh
│ │ ├── super_resolution/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── cc/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ ├── SuperResolution.cpp
│ │ │ │ │ │ ├── SuperResolution.h
│ │ │ │ │ │ └── SuperResolution_jni.cpp
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── superresolution/
│ │ │ │ │ │ ├── AssetsUtil.java
│ │ │ │ │ │ └── MainActivity.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ │ └── rounded_edge.xml
│ │ │ │ │ ├── drawable-v24/
│ │ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ └── bottom_sheet_layout.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ml/
│ │ │ └── super_resolution.ipynb
│ │ ├── text_classification/
│ │ │ ├── android/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── download_model.gradle
│ │ │ │ │ ├── proguard-rules.pro
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── textclassification/
│ │ │ │ │ │ └── TextClassifierInstrumentationTest.kt
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── org/
│ │ │ │ │ │ └── tensorflow/
│ │ │ │ │ │ └── lite/
│ │ │ │ │ │ └── examples/
│ │ │ │ │ │ └── textclassification/
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ ├── ResultsAdapter.kt
│ │ │ │ │ │ └── TextClassificationHelper.kt
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── ic_minus.xml
│ │ │ │ │ │ └── ic_plus.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ │ ├── info_bottom_sheet.xml
│ │ │ │ │ │ └── item_classification.xml
│ │ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ │ ├── values/
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── dimens.xml
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── themes.xml
│ │ │ │ │ └── values-night/
│ │ │ │ │ └── themes.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ └── settings.gradle
│ │ │ └── ios/
│ │ │ ├── Podfile
│ │ │ ├── README.md
│ │ │ ├── TextClassification/
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj/
│ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ └── ViewController.swift
│ │ │ └── TextClassification.xcodeproj/
│ │ │ └── project.pbxproj
│ │ ├── text_searcher/
│ │ │ └── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── textsearcher/
│ │ │ │ │ └── TextSearcherClientTest.kt
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── textsearcher/
│ │ │ │ │ ├── tflite/
│ │ │ │ │ │ └── TextSearcherClient.kt
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── TextSearcherActivity.kt
│ │ │ │ │ ├── TextSearcherResultActivity.kt
│ │ │ │ │ └── WebviewActivity.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── ic_baseline_close_48.xml
│ │ │ │ │ ├── ic_baseline_search_48.xml
│ │ │ │ │ ├── ic_baseline_web_48.xml
│ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-v24/
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── activity_text_searcher.xml
│ │ │ │ │ ├── activity_text_searcher_result.xml
│ │ │ │ │ ├── activity_webview.xml
│ │ │ │ │ ├── preset_query_item_layout.xml
│ │ │ │ │ └── searcher_result_item_layout.xml
│ │ │ │ ├── menu/
│ │ │ │ │ └── action_bar_menu.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ └── settings.gradle
│ │ └── video_classification/
│ │ ├── android/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── download.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src/
│ │ │ │ ├── androidTest/
│ │ │ │ │ └── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── videoclassification/
│ │ │ │ │ └── VideoClassifierTest.kt
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── assets/
│ │ │ │ │ └── kinetics600_label_map.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── tensorflow/
│ │ │ │ │ └── lite/
│ │ │ │ │ └── examples/
│ │ │ │ │ └── videoclassification/
│ │ │ │ │ ├── CalculateUtils.kt
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── ml/
│ │ │ │ │ └── VideoClassifier.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ ├── bg_bottom_sheet.xml
│ │ │ │ │ ├── bg_rectangle.xml
│ │ │ │ │ ├── ic_baseline_add.xml
│ │ │ │ │ └── ic_baseline_remove.xml
│ │ │ │ ├── layout/
│ │ │ │ │ ├── activity_main.xml
│ │ │ │ │ └── layout_bottom_sheet.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ └── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ └── settings.gradle
│ │ └── raspberry_pi/
│ │ ├── README.md
│ │ ├── classify.py
│ │ ├── kinetics600_label_map.txt
│ │ ├── requirements.txt
│ │ ├── setup.sh
│ │ ├── video_classifier.py
│ │ └── video_classifier_test.py
│ └── tools/
│ ├── build_all_android.sh
│ ├── build_all_ios.sh
│ ├── build_android_app.sh
│ ├── build_ios_app.sh
│ ├── build_model_maker_api_docs.py
│ ├── shared/
│ │ └── android/
│ │ ├── app/
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ └── mipmap-anydpi-v26/
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ └── gradlew.bat
│ └── test_pip_setup.sh
├── setup.py
├── templates/
│ └── notebook.ipynb
└── tensorflow_examples/
├── __init__.py
├── lite/
│ ├── __init__.py
│ └── model_maker/
│ ├── README.md
│ ├── RELEASE.md
│ ├── __init__.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ └── cli_test.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── api/
│ │ │ ├── __init__.py
│ │ │ ├── api_gen.py
│ │ │ ├── api_gen_test.py
│ │ │ ├── api_util.py
│ │ │ ├── api_util_test.py
│ │ │ ├── deprecated_api.py
│ │ │ ├── golden_api.json
│ │ │ ├── golden_api_doc.py
│ │ │ └── include.py
│ │ ├── compat.py
│ │ ├── data_util/
│ │ │ ├── __init__.py
│ │ │ ├── audio_dataloader.py
│ │ │ ├── audio_dataloader_test.py
│ │ │ ├── data_util.py
│ │ │ ├── dataloader.py
│ │ │ ├── dataloader_test.py
│ │ │ ├── image_dataloader.py
│ │ │ ├── image_dataloader_test.py
│ │ │ ├── image_searcher_dataloader.py
│ │ │ ├── metadata_loader.py
│ │ │ ├── metadata_loader_test.py
│ │ │ ├── object_detector_dataloader.py
│ │ │ ├── object_detector_dataloader_test.py
│ │ │ ├── object_detector_dataloader_util.py
│ │ │ ├── object_detector_dataloader_util_test.py
│ │ │ ├── recommendation_config.py
│ │ │ ├── recommendation_dataloader.py
│ │ │ ├── recommendation_dataloader_test.py
│ │ │ ├── recommendation_testutil.py
│ │ │ ├── searcher_dataloader.py
│ │ │ ├── searcher_dataloader_test.py
│ │ │ ├── testdata/
│ │ │ │ ├── annotations/
│ │ │ │ │ └── 2012_12.xml
│ │ │ │ ├── annotations.json
│ │ │ │ ├── mobilenet_v2_035_96_embedder_with_metadata.tflite
│ │ │ │ ├── movies.csv
│ │ │ │ ├── object_detection_csv/
│ │ │ │ │ ├── json_files/
│ │ │ │ │ │ ├── test_annotations.json
│ │ │ │ │ │ └── train_annotations.json
│ │ │ │ │ └── salads_ml_use.csv
│ │ │ │ ├── regex_one_embedding_with_metadata.tflite
│ │ │ │ ├── squad_testdata/
│ │ │ │ │ ├── dev-v1.1.json
│ │ │ │ │ ├── dev-v2.0.json
│ │ │ │ │ ├── train-v1.1.json
│ │ │ │ │ └── train-v2.0.json
│ │ │ │ └── trips.csv
│ │ │ ├── text_dataloader.py
│ │ │ ├── text_dataloader_test.py
│ │ │ ├── text_searcher_dataloader.py
│ │ │ └── text_searcher_dataloader_test.py
│ │ ├── export_format.py
│ │ ├── file_util.py
│ │ ├── optimization/
│ │ │ ├── __init__.py
│ │ │ └── warmup.py
│ │ ├── task/
│ │ │ ├── __init__.py
│ │ │ ├── audio_classifier.py
│ │ │ ├── audio_classifier_test.py
│ │ │ ├── classification_model.py
│ │ │ ├── classification_model_test.py
│ │ │ ├── configs.py
│ │ │ ├── custom_model.py
│ │ │ ├── custom_model_test.py
│ │ │ ├── hub_loader.py
│ │ │ ├── hub_loader_test.py
│ │ │ ├── image_classifier.py
│ │ │ ├── image_classifier_test.py
│ │ │ ├── image_classifier_v1_test.py
│ │ │ ├── image_preprocessing.py
│ │ │ ├── image_preprocessing_test.py
│ │ │ ├── make_image_classifier.py
│ │ │ ├── metadata_writer_for_image_classifier.py
│ │ │ ├── metadata_writers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bert/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── metadata_writer_for_bert.py
│ │ │ │ │ ├── question_answerer/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── metadata_writer_for_bert_question_answerer.py
│ │ │ │ │ └── text_classifier/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── metadata_writer_for_bert_text_classifier.py
│ │ │ │ ├── metadata_writer.py
│ │ │ │ └── text_classifier/
│ │ │ │ ├── __init__.py
│ │ │ │ └── metadata_writer_for_text_classifier.py
│ │ │ ├── model_spec/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── audio_spec.py
│ │ │ │ ├── audio_spec_test.py
│ │ │ │ ├── image_spec.py
│ │ │ │ ├── model_spec_test.py
│ │ │ │ ├── object_detector_spec.py
│ │ │ │ ├── object_detector_spec_test.py
│ │ │ │ ├── recommendation_spec.py
│ │ │ │ ├── recommendation_spec_test.py
│ │ │ │ ├── testdata/
│ │ │ │ │ └── fake_effdet_lite0_hub/
│ │ │ │ │ ├── keras_metadata.pb
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ │ └── variables.index
│ │ │ │ ├── text_spec.py
│ │ │ │ ├── text_spec_test.py
│ │ │ │ └── util.py
│ │ │ ├── model_util.py
│ │ │ ├── model_util_test.py
│ │ │ ├── model_util_v1_test.py
│ │ │ ├── object_detector.py
│ │ │ ├── object_detector_test.py
│ │ │ ├── question_answer.py
│ │ │ ├── question_answer_test.py
│ │ │ ├── question_answer_v1_test.py
│ │ │ ├── recommendation.py
│ │ │ ├── recommendation_test.py
│ │ │ ├── searcher.py
│ │ │ ├── searcher_test.py
│ │ │ ├── testdata/
│ │ │ │ ├── average_word_vec_metadata.json
│ │ │ │ ├── bert_classifier_metadata.json
│ │ │ │ ├── bert_qa_metadata.json
│ │ │ │ ├── dummy_sp_text_embedder.tflite
│ │ │ │ ├── efficientdet_lite0_metadata.json
│ │ │ │ ├── efficientnet_lite0_metadata.json
│ │ │ │ ├── hub_module_v1_mini/
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ └── tfhub_module.pb
│ │ │ │ ├── hub_module_v1_mini_train/
│ │ │ │ │ ├── saved_model.pb
│ │ │ │ │ ├── tfhub_module.pb
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ │ └── variables.index
│ │ │ │ ├── mobilenet_v3_small_100_224_embedder_scann.json
│ │ │ │ └── saved_model_v2_mini/
│ │ │ │ ├── saved_model.pb
│ │ │ │ └── variables/
│ │ │ │ ├── variables.data-00000-of-00001
│ │ │ │ └── variables.index
│ │ │ ├── text_classifier.py
│ │ │ ├── text_classifier_test.py
│ │ │ ├── text_classifier_v1_test.py
│ │ │ └── train_image_classifier_lib.py
│ │ ├── test_util.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── ondevice_scann_builder.py
│ │ ├── ondevice_scann_builder_test.py
│ │ ├── scann_converter.py
│ │ └── scann_converter_test.py
│ ├── demo/
│ │ ├── __init__.py
│ │ ├── audio_classification_demo.py
│ │ ├── audio_classification_demo_test.py
│ │ ├── custom_model_demo.py
│ │ ├── custom_model_demo_test.py
│ │ ├── image_classification.ipynb
│ │ ├── image_classification_demo.py
│ │ ├── image_classification_demo_test.py
│ │ ├── question_answer_demo.py
│ │ ├── recommendation_demo.py
│ │ ├── recommendation_demo_test.py
│ │ ├── text_classification.ipynb
│ │ ├── text_classification_demo.py
│ │ └── text_classification_demo_test.py
│ ├── pip_package/
│ │ ├── create_venv.sh
│ │ ├── golden_api_test.py
│ │ ├── setup.py
│ │ ├── setup_util.py
│ │ └── test_pip_package.sh
│ ├── public/
│ │ ├── __init__.py
│ │ ├── audio_classifier/
│ │ │ └── __init__.py
│ │ ├── config/
│ │ │ └── __init__.py
│ │ ├── image_classifier/
│ │ │ └── __init__.py
│ │ ├── model_spec/
│ │ │ └── __init__.py
│ │ ├── object_detector/
│ │ │ └── __init__.py
│ │ ├── question_answer/
│ │ │ └── __init__.py
│ │ ├── recommendation/
│ │ │ ├── __init__.py
│ │ │ └── spec/
│ │ │ └── __init__.py
│ │ ├── searcher/
│ │ │ └── __init__.py
│ │ └── text_classifier/
│ │ └── __init__.py
│ ├── requirements.txt
│ ├── requirements_nightly.txt
│ └── third_party/
│ ├── efficientdet/
│ │ ├── Det-AdvProp.md
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aug/
│ │ │ ├── __init__.py
│ │ │ ├── autoaugment.py
│ │ │ ├── gridmask.py
│ │ │ └── mosaic.py
│ │ ├── backbone/
│ │ │ ├── __init__.py
│ │ │ ├── autoaugment.py
│ │ │ ├── backbone_factory.py
│ │ │ ├── efficientnet_builder.py
│ │ │ ├── efficientnet_lite_builder.py
│ │ │ ├── efficientnet_model.py
│ │ │ ├── preprocessing.py
│ │ │ └── train_backbone.py
│ │ ├── coco_metric.py
│ │ ├── dataloader.py
│ │ ├── dataset/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── create_coco_tfrecord.py
│ │ │ ├── create_pascal_tfrecord.py
│ │ │ ├── inspect_tfrecords.py
│ │ │ ├── label_map_util.py
│ │ │ └── tfrecord_util.py
│ │ ├── det_advprop_tutorial.ipynb
│ │ ├── det_model_fn.py
│ │ ├── efficientdet_arch.py
│ │ ├── hparams_config.py
│ │ ├── inference.py
│ │ ├── install_deps.sh
│ │ ├── iou_utils.py
│ │ ├── keras/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── anchors.py
│ │ │ ├── efficientdet_keras.py
│ │ │ ├── eval.py
│ │ │ ├── eval_tflite.py
│ │ │ ├── fpn_configs.py
│ │ │ ├── infer.py
│ │ │ ├── infer_lib.py
│ │ │ ├── inspector.py
│ │ │ ├── label_util.py
│ │ │ ├── postprocess.py
│ │ │ ├── segmentation.py
│ │ │ ├── tfmot.py
│ │ │ ├── train.py
│ │ │ ├── train_lib.py
│ │ │ ├── util_keras.py
│ │ │ └── wbf.py
│ │ ├── main.py
│ │ ├── model_inspect.py
│ │ ├── nms_np.py
│ │ ├── object_detection/
│ │ │ ├── __init__.py
│ │ │ ├── argmax_matcher.py
│ │ │ ├── box_coder.py
│ │ │ ├── box_list.py
│ │ │ ├── faster_rcnn_box_coder.py
│ │ │ ├── matcher.py
│ │ │ ├── preprocessor.py
│ │ │ ├── region_similarity_calculator.py
│ │ │ ├── shape_utils.py
│ │ │ ├── target_assigner.py
│ │ │ └── tf_example_decoder.py
│ │ ├── requirements.txt
│ │ ├── run_tflite.py
│ │ ├── tensorrt.py
│ │ ├── tutorial.ipynb
│ │ ├── utils.py
│ │ └── visualize/
│ │ ├── __init__.py
│ │ ├── shape_utils.py
│ │ ├── standard_fields.py
│ │ ├── static_shape.py
│ │ └── vis_utils.py
│ └── recommendation/
│ └── ml/
│ ├── configs/
│ │ ├── __init__.py
│ │ ├── input-config.proto
│ │ ├── input_config_pb2.py
│ │ ├── model_config.py
│ │ └── sample_input_config.pbtxt
│ ├── data/
│ │ ├── __init__.py
│ │ ├── example_generation_movielens.py
│ │ └── example_generation_movielens_test.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── context_encoder.py
│ │ ├── context_encoder_test.py
│ │ ├── dotproduct_similarity.py
│ │ ├── dotproduct_similarity_test.py
│ │ ├── input_pipeline.py
│ │ ├── input_pipeline_test.py
│ │ ├── label_encoder.py
│ │ ├── label_encoder_test.py
│ │ ├── losses.py
│ │ ├── losses_test.py
│ │ ├── metrics.py
│ │ ├── metrics_test.py
│ │ ├── recommendation_model.py
│ │ ├── recommendation_model_launcher.py
│ │ ├── recommendation_model_launcher_test.py
│ │ ├── recommendation_model_test.py
│ │ └── utils.py
│ ├── ondevice_recommendation.ipynb
│ └── requirements.txt
├── models/
│ ├── __init__.py
│ ├── dcgan/
│ │ ├── __init__.py
│ │ ├── dcgan.py
│ │ └── dcgan_test.py
│ ├── densenet/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── densenet.py
│ │ ├── densenet_distributed_test.py
│ │ ├── densenet_test.py
│ │ ├── distributed_train.py
│ │ ├── train.py
│ │ └── utils.py
│ ├── nmt_with_attention/
│ │ ├── __init__.py
│ │ ├── distributed_test.py
│ │ ├── distributed_train.py
│ │ ├── nmt.py
│ │ ├── nmt_test.py
│ │ ├── train.py
│ │ └── utils.py
│ └── pix2pix/
│ ├── __init__.py
│ ├── data_download.py
│ ├── pix2pix.py
│ └── pix2pix_test.py
└── profiling/
├── imagenet_preprocessing_ineffecient_input_pipeline.py
└── resnet_model.py
Showing preview only (275K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3077 symbols across 371 files)
FILE: lite/codelabs/flower_classification/android/finish/app/src/androidTest/java/org/tensorflow/lite/examples/classification/ClassifierTest.java
class ClassifierTest (line 43) | @RunWith(AndroidJUnit4.class)
method classificationResultsShouldNotChange (line 53) | @Test
method loadImage (line 75) | private static Bitmap loadImage(String fileName) {
method loadRecognitions (line 87) | private static List<Recognition> loadRecognitions(String fileName) {
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/CameraActivity.java
class CameraActivity (line 59) | public abstract class CameraActivity extends AppCompatActivity
method onCreate (line 102) | @Override
method getRgbBytes (line 194) | protected int[] getRgbBytes() {
method getLuminanceStride (line 199) | protected int getLuminanceStride() {
method getLuminance (line 203) | protected byte[] getLuminance() {
method onPreviewFrame (line 208) | @Override
method onImageAvailable (line 253) | @Override
method onStart (line 316) | @Override
method onResume (line 322) | @Override
method onPause (line 332) | @Override
method onStop (line 348) | @Override
method onDestroy (line 354) | @Override
method runInBackground (line 360) | protected synchronized void runInBackground(final Runnable r) {
method onRequestPermissionsResult (line 366) | @Override
method allPermissionsGranted (line 379) | private static boolean allPermissionsGranted(final int[] grantResults) {
method hasPermission (line 388) | private boolean hasPermission() {
method requestPermission (line 396) | private void requestPermission() {
method isHardwareLevelSupported (line 410) | private boolean isHardwareLevelSupported(
method chooseCamera (line 420) | private String chooseCamera() {
method setFragment (line 456) | protected void setFragment() {
method fillBytes (line 485) | protected void fillBytes(final Plane[] planes, final byte[][] yuvBytes) {
method readyForNextImage (line 498) | protected void readyForNextImage() {
method getScreenOrientation (line 504) | protected int getScreenOrientation() {
method showResultsInBottomSheet (line 517) | @UiThread
method showFrameInfo (line 546) | protected void showFrameInfo(String frameInfo) {
method showCropInfo (line 550) | protected void showCropInfo(String cropInfo) {
method showCameraResolution (line 554) | protected void showCameraResolution(String cameraInfo) {
method showRotationInfo (line 558) | protected void showRotationInfo(String rotation) {
method showInference (line 562) | protected void showInference(String inferenceTime) {
method getDevice (line 566) | protected Device getDevice() {
method setDevice (line 570) | private void setDevice(Device device) {
method getNumThreads (line 582) | protected int getNumThreads() {
method setNumThreads (line 586) | private void setNumThreads(int numThreads) {
method processImage (line 594) | protected abstract void processImage();
method onPreviewSizeChosen (line 596) | protected abstract void onPreviewSizeChosen(final Size size, final int...
method getLayoutId (line 598) | protected abstract int getLayoutId();
method getDesiredPreviewFrameSize (line 600) | protected abstract Size getDesiredPreviewFrameSize();
method onInferenceConfigurationChanged (line 602) | protected abstract void onInferenceConfigurationChanged();
method onClick (line 604) | @Override
method onItemSelected (line 623) | @Override
method onNothingSelected (line 630) | @Override
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java
class CameraConnectionFragment (line 70) | @SuppressWarnings("FragmentNotInstantiable")
method onCaptureProgressed (line 104) | @Override
method onCaptureCompleted (line 110) | @Override
method onSurfaceTextureAvailable (line 138) | @Override
method onSurfaceTextureSizeChanged (line 144) | @Override
method onSurfaceTextureDestroyed (line 150) | @Override
method onSurfaceTextureUpdated (line 155) | @Override
method onOpened (line 167) | @Override
method onDisconnected (line 175) | @Override
method onError (line 182) | @Override
method CameraConnectionFragment (line 194) | @SuppressLint("ValidFragment")
method chooseOptimalSize (line 215) | protected static Size chooseOptimalSize(final Size[] choices, final in...
method newInstance (line 256) | public static CameraConnectionFragment newInstance(
method showToast (line 269) | private void showToast(final String text) {
method onCreateView (line 282) | @Override
method onViewCreated (line 288) | @Override
method onActivityCreated (line 293) | @Override
method onResume (line 298) | @Override
method onPause (line 314) | @Override
method setCamera (line 321) | public void setCamera(String cameraId) {
method setUpCameraOutputs (line 326) | private void setUpCameraOutputs() {
method openCamera (line 367) | private void openCamera(final int width, final int height) {
method closeCamera (line 385) | private void closeCamera() {
method startBackgroundThread (line 408) | private void startBackgroundThread() {
method stopBackgroundThread (line 415) | private void stopBackgroundThread() {
method createCameraPreviewSession (line 427) | private void createCameraPreviewSession() {
method configureTransform (line 503) | private void configureTransform(final int viewWidth, final int viewHei...
type ConnectionCallback (line 533) | public interface ConnectionCallback {
method onPreviewSizeChosen (line 534) | void onPreviewSizeChosen(Size size, int cameraRotation);
class CompareSizesByArea (line 538) | static class CompareSizesByArea implements Comparator<Size> {
method compare (line 539) | @Override
class ErrorDialog (line 548) | public static class ErrorDialog extends DialogFragment {
method newInstance (line 551) | public static ErrorDialog newInstance(final String message) {
method onCreateDialog (line 559) | @Override
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/ClassifierActivity.java
class ClassifierActivity (line 33) | public class ClassifierActivity extends CameraActivity implements OnImag...
method getLayoutId (line 47) | @Override
method getDesiredPreviewFrameSize (line 52) | @Override
method onPreviewSizeChosen (line 57) | @Override
method processImage (line 81) | @Override
method onInferenceConfigurationChanged (line 115) | @Override
method recreateClassifier (line 126) | private void recreateClassifier(Device device, int numThreads) {
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/LegacyCameraConnectionFragment.java
class LegacyCameraConnectionFragment (line 40) | public class LegacyCameraConnectionFragment extends Fragment {
method onSurfaceTextureAvailable (line 65) | @Override
method onSurfaceTextureSizeChanged (line 106) | @Override
method onSurfaceTextureDestroyed (line 110) | @Override
method onSurfaceTextureUpdated (line 115) | @Override
method LegacyCameraConnectionFragment (line 121) | @SuppressLint("ValidFragment")
method LegacyCameraConnectionFragment (line 129) | public LegacyCameraConnectionFragment() {
method onCreateView (line 132) | @Override
method onViewCreated (line 138) | @Override
method onActivityCreated (line 143) | @Override
method onResume (line 148) | @Override
method onPause (line 166) | @Override
method startBackgroundThread (line 174) | private void startBackgroundThread() {
method stopBackgroundThread (line 180) | private void stopBackgroundThread() {
method stopCamera (line 190) | protected void stopCamera() {
method getCameraId (line 199) | private int getCameraId() {
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/AutoFitTextureView.java
class AutoFitTextureView (line 24) | public class AutoFitTextureView extends TextureView {
method AutoFitTextureView (line 28) | public AutoFitTextureView(final Context context) {
method AutoFitTextureView (line 32) | public AutoFitTextureView(final Context context, final AttributeSet at...
method AutoFitTextureView (line 36) | public AutoFitTextureView(final Context context, final AttributeSet at...
method setAspectRatio (line 48) | public void setAspectRatio(final int width, final int height) {
method onMeasure (line 57) | @Override
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/OverlayView.java
class OverlayView (line 26) | public class OverlayView extends View {
method OverlayView (line 29) | public OverlayView(final Context context, final AttributeSet attrs) {
method addCallback (line 33) | public void addCallback(final DrawCallback callback) {
method draw (line 37) | @Override
type DrawCallback (line 45) | public interface DrawCallback {
method drawCallback (line 46) | public void drawCallback(final Canvas canvas);
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/RecognitionScoreView.java
class RecognitionScoreView (line 27) | public class RecognitionScoreView extends View implements ResultsView {
method RecognitionScoreView (line 34) | public RecognitionScoreView(final Context context, final AttributeSet ...
method setResults (line 47) | @Override
method onDraw (line 53) | @Override
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/ResultsView.java
type ResultsView (line 21) | public interface ResultsView {
method setResults (line 22) | public void setResults(final List<Recognition> results);
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/BorderedText.java
class BorderedText (line 28) | public class BorderedText {
method BorderedText (line 40) | public BorderedText(final float textSize) {
method BorderedText (line 52) | public BorderedText(final int interiorColor, final int exteriorColor, ...
method setTypeface (line 71) | public void setTypeface(Typeface typeface) {
method drawText (line 76) | public void drawText(final Canvas canvas, final float posX, final floa...
method drawLines (line 81) | public void drawLines(Canvas canvas, final float posX, final float pos...
method setInteriorColor (line 89) | public void setInteriorColor(final int color) {
method setExteriorColor (line 93) | public void setExteriorColor(final int color) {
method getTextSize (line 97) | public float getTextSize() {
method setAlpha (line 101) | public void setAlpha(final int alpha) {
method getTextBounds (line 106) | public void getTextBounds(
method setTextAlign (line 111) | public void setTextAlign(final Align align) {
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/ImageUtils.java
class ImageUtils (line 24) | public class ImageUtils {
method getYUVByteSize (line 36) | public static int getYUVByteSize(final int width, final int height) {
method saveBitmap (line 52) | public static void saveBitmap(final Bitmap bitmap) {
method saveBitmap (line 62) | public static void saveBitmap(final Bitmap bitmap, final String filena...
method convertYUV420SPToARGB8888 (line 87) | public static void convertYUV420SPToARGB8888(byte[] input, int width, ...
method YUV2RGB (line 106) | private static int YUV2RGB(int y, int u, int v) {
method convertYUV420ToARGB8888 (line 130) | public static void convertYUV420ToARGB8888(
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/Logger.java
class Logger (line 23) | public final class Logger {
method Logger (line 46) | public Logger(final Class<?> clazz) {
method Logger (line 55) | public Logger(final String messagePrefix) {
method Logger (line 70) | public Logger(final String tag, final String messagePrefix) {
method Logger (line 77) | public Logger() {
method Logger (line 82) | public Logger(final int minLogLevel) {
method getCallerSimpleName (line 99) | private static String getCallerSimpleName() {
method setMinLogLevel (line 115) | public void setMinLogLevel(final int minLogLevel) {
method isLoggable (line 119) | public boolean isLoggable(final int logLevel) {
method toMessage (line 123) | @SuppressWarnings("AnnotateFormatMethod")
method v (line 128) | @SuppressWarnings("AnnotateFormatMethod")
method v (line 135) | @SuppressWarnings("AnnotateFormatMethod")
method d (line 142) | @SuppressWarnings("AnnotateFormatMethod")
method d (line 149) | @SuppressWarnings("AnnotateFormatMethod")
method i (line 156) | @SuppressWarnings("AnnotateFormatMethod")
method i (line 163) | @SuppressWarnings("AnnotateFormatMethod")
method w (line 170) | @SuppressWarnings("AnnotateFormatMethod")
method w (line 177) | @SuppressWarnings("AnnotateFormatMethod")
method e (line 184) | @SuppressWarnings("AnnotateFormatMethod")
method e (line 191) | @SuppressWarnings("AnnotateFormatMethod")
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/Classifier.java
class Classifier (line 48) | public abstract class Classifier {
type Device (line 52) | public enum Device {
method create (line 100) | public static Classifier create(Activity activity, Device device, int ...
class Recognition (line 107) | public static class Recognition {
method Recognition (line 125) | public Recognition(
method getId (line 133) | public String getId() {
method getTitle (line 137) | public String getTitle() {
method getConfidence (line 141) | public Float getConfidence() {
method getLocation (line 145) | public RectF getLocation() {
method setLocation (line 149) | public void setLocation(RectF location) {
method toString (line 153) | @Override
method Classifier (line 177) | protected Classifier(Activity activity, Device device, int numThreads)...
method recognizeImage (line 219) | public List<Recognition> recognizeImage(final Bitmap bitmap, int senso...
method close (line 252) | public void close() {
method getImageSizeX (line 268) | public int getImageSizeX() {
method getImageSizeY (line 273) | public int getImageSizeY() {
method loadImage (line 278) | private TensorImage loadImage(final Bitmap bitmap, int sensorOrientati...
method getTopKProbability (line 298) | private static List<Recognition> getTopKProbability(Map<String, Float>...
method getModelPath (line 324) | protected abstract String getModelPath();
method getLabelPath (line 327) | protected abstract String getLabelPath();
method getPreprocessNormalizeOp (line 330) | protected abstract TensorOperator getPreprocessNormalizeOp();
method getPostprocessNormalizeOp (line 340) | protected abstract TensorOperator getPostprocessNormalizeOp();
FILE: lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/ClassifierFloatMobileNet.java
class ClassifierFloatMobileNet (line 25) | public class ClassifierFloatMobileNet extends Classifier {
method ClassifierFloatMobileNet (line 45) | public ClassifierFloatMobileNet(Activity activity, Device device, int ...
method getModelPath (line 51) | @Override
method getLabelPath (line 56) | @Override
method getPreprocessNormalizeOp (line 61) | @Override
method getPostprocessNormalizeOp (line 66) | @Override
FILE: lite/codelabs/flower_classification/android/start/app/src/androidTest/java/org/tensorflow/lite/examples/classification/ClassifierTest.java
class ClassifierTest (line 44) | @RunWith(AndroidJUnit4.class)
method classificationResultsShouldNotChange (line 54) | @Test
method loadImage (line 76) | private static Bitmap loadImage(String fileName) {
method loadRecognitions (line 88) | private static List<Recognition> loadRecognitions(String fileName) {
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/CameraActivity.java
class CameraActivity (line 59) | public abstract class CameraActivity extends AppCompatActivity
method onCreate (line 102) | @Override
method getRgbBytes (line 194) | protected int[] getRgbBytes() {
method getLuminanceStride (line 199) | protected int getLuminanceStride() {
method getLuminance (line 203) | protected byte[] getLuminance() {
method onPreviewFrame (line 208) | @Override
method onImageAvailable (line 253) | @Override
method onStart (line 316) | @Override
method onResume (line 322) | @Override
method onPause (line 332) | @Override
method onStop (line 348) | @Override
method onDestroy (line 354) | @Override
method runInBackground (line 360) | protected synchronized void runInBackground(final Runnable r) {
method onRequestPermissionsResult (line 366) | @Override
method allPermissionsGranted (line 378) | private static boolean allPermissionsGranted(final int[] grantResults) {
method hasPermission (line 387) | private boolean hasPermission() {
method requestPermission (line 395) | private void requestPermission() {
method isHardwareLevelSupported (line 409) | private boolean isHardwareLevelSupported(
method chooseCamera (line 419) | private String chooseCamera() {
method setFragment (line 455) | protected void setFragment() {
method fillBytes (line 484) | protected void fillBytes(final Plane[] planes, final byte[][] yuvBytes) {
method readyForNextImage (line 497) | protected void readyForNextImage() {
method getScreenOrientation (line 503) | protected int getScreenOrientation() {
method showResultsInBottomSheet (line 516) | @UiThread
method showFrameInfo (line 545) | protected void showFrameInfo(String frameInfo) {
method showCropInfo (line 549) | protected void showCropInfo(String cropInfo) {
method showCameraResolution (line 553) | protected void showCameraResolution(String cameraInfo) {
method showRotationInfo (line 557) | protected void showRotationInfo(String rotation) {
method showInference (line 561) | protected void showInference(String inferenceTime) {
method getDevice (line 565) | protected Device getDevice() {
method setDevice (line 569) | private void setDevice(Device device) {
method getNumThreads (line 581) | protected int getNumThreads() {
method setNumThreads (line 585) | private void setNumThreads(int numThreads) {
method processImage (line 593) | protected abstract void processImage();
method onPreviewSizeChosen (line 595) | protected abstract void onPreviewSizeChosen(final Size size, final int...
method getLayoutId (line 597) | protected abstract int getLayoutId();
method getDesiredPreviewFrameSize (line 599) | protected abstract Size getDesiredPreviewFrameSize();
method onInferenceConfigurationChanged (line 601) | protected abstract void onInferenceConfigurationChanged();
method onClick (line 603) | @Override
method onItemSelected (line 622) | @Override
method onNothingSelected (line 629) | @Override
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java
class CameraConnectionFragment (line 70) | @SuppressWarnings("FragmentNotInstantiable")
method onCaptureProgressed (line 104) | @Override
method onCaptureCompleted (line 110) | @Override
method onSurfaceTextureAvailable (line 138) | @Override
method onSurfaceTextureSizeChanged (line 144) | @Override
method onSurfaceTextureDestroyed (line 150) | @Override
method onSurfaceTextureUpdated (line 155) | @Override
method onOpened (line 167) | @Override
method onDisconnected (line 175) | @Override
method onError (line 182) | @Override
method CameraConnectionFragment (line 194) | @SuppressLint("ValidFragment")
method chooseOptimalSize (line 215) | protected static Size chooseOptimalSize(final Size[] choices, final in...
method newInstance (line 256) | public static CameraConnectionFragment newInstance(
method showToast (line 269) | private void showToast(final String text) {
method onCreateView (line 282) | @Override
method onViewCreated (line 288) | @Override
method onActivityCreated (line 293) | @Override
method onResume (line 298) | @Override
method onPause (line 314) | @Override
method setCamera (line 321) | public void setCamera(String cameraId) {
method setUpCameraOutputs (line 326) | private void setUpCameraOutputs() {
method openCamera (line 367) | private void openCamera(final int width, final int height) {
method closeCamera (line 385) | private void closeCamera() {
method startBackgroundThread (line 408) | private void startBackgroundThread() {
method stopBackgroundThread (line 415) | private void stopBackgroundThread() {
method createCameraPreviewSession (line 427) | private void createCameraPreviewSession() {
method configureTransform (line 503) | private void configureTransform(final int viewWidth, final int viewHei...
type ConnectionCallback (line 533) | public interface ConnectionCallback {
method onPreviewSizeChosen (line 534) | void onPreviewSizeChosen(Size size, int cameraRotation);
class CompareSizesByArea (line 538) | static class CompareSizesByArea implements Comparator<Size> {
method compare (line 539) | @Override
class ErrorDialog (line 548) | public static class ErrorDialog extends DialogFragment {
method newInstance (line 551) | public static ErrorDialog newInstance(final String message) {
method onCreateDialog (line 559) | @Override
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/ClassifierActivity.java
class ClassifierActivity (line 33) | public class ClassifierActivity extends CameraActivity implements OnImag...
method getLayoutId (line 47) | @Override
method getDesiredPreviewFrameSize (line 52) | @Override
method onPreviewSizeChosen (line 57) | @Override
method processImage (line 81) | @Override
method onInferenceConfigurationChanged (line 115) | @Override
method recreateClassifier (line 126) | private void recreateClassifier(Device device, int numThreads) {
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/LegacyCameraConnectionFragment.java
class LegacyCameraConnectionFragment (line 40) | public class LegacyCameraConnectionFragment extends Fragment {
method onSurfaceTextureAvailable (line 65) | @Override
method onSurfaceTextureSizeChanged (line 106) | @Override
method onSurfaceTextureDestroyed (line 110) | @Override
method onSurfaceTextureUpdated (line 115) | @Override
method LegacyCameraConnectionFragment (line 121) | @SuppressLint("ValidFragment")
method LegacyCameraConnectionFragment (line 129) | public LegacyCameraConnectionFragment() {
method onCreateView (line 132) | @Override
method onViewCreated (line 138) | @Override
method onActivityCreated (line 143) | @Override
method onResume (line 148) | @Override
method onPause (line 166) | @Override
method startBackgroundThread (line 174) | private void startBackgroundThread() {
method stopBackgroundThread (line 180) | private void stopBackgroundThread() {
method stopCamera (line 190) | protected void stopCamera() {
method getCameraId (line 199) | private int getCameraId() {
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/AutoFitTextureView.java
class AutoFitTextureView (line 24) | public class AutoFitTextureView extends TextureView {
method AutoFitTextureView (line 28) | public AutoFitTextureView(final Context context) {
method AutoFitTextureView (line 32) | public AutoFitTextureView(final Context context, final AttributeSet at...
method AutoFitTextureView (line 36) | public AutoFitTextureView(final Context context, final AttributeSet at...
method setAspectRatio (line 48) | public void setAspectRatio(final int width, final int height) {
method onMeasure (line 57) | @Override
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/OverlayView.java
class OverlayView (line 26) | public class OverlayView extends View {
method OverlayView (line 29) | public OverlayView(final Context context, final AttributeSet attrs) {
method addCallback (line 33) | public void addCallback(final DrawCallback callback) {
method draw (line 37) | @Override
type DrawCallback (line 45) | public interface DrawCallback {
method drawCallback (line 46) | public void drawCallback(final Canvas canvas);
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/RecognitionScoreView.java
class RecognitionScoreView (line 27) | public class RecognitionScoreView extends View implements ResultsView {
method RecognitionScoreView (line 34) | public RecognitionScoreView(final Context context, final AttributeSet ...
method setResults (line 47) | @Override
method onDraw (line 53) | @Override
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/ResultsView.java
type ResultsView (line 21) | public interface ResultsView {
method setResults (line 22) | public void setResults(final List<Recognition> results);
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/BorderedText.java
class BorderedText (line 28) | public class BorderedText {
method BorderedText (line 40) | public BorderedText(final float textSize) {
method BorderedText (line 52) | public BorderedText(final int interiorColor, final int exteriorColor, ...
method setTypeface (line 71) | public void setTypeface(Typeface typeface) {
method drawText (line 76) | public void drawText(final Canvas canvas, final float posX, final floa...
method drawLines (line 81) | public void drawLines(Canvas canvas, final float posX, final float pos...
method setInteriorColor (line 89) | public void setInteriorColor(final int color) {
method setExteriorColor (line 93) | public void setExteriorColor(final int color) {
method getTextSize (line 97) | public float getTextSize() {
method setAlpha (line 101) | public void setAlpha(final int alpha) {
method getTextBounds (line 106) | public void getTextBounds(
method setTextAlign (line 111) | public void setTextAlign(final Align align) {
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/ImageUtils.java
class ImageUtils (line 24) | public class ImageUtils {
method getYUVByteSize (line 36) | public static int getYUVByteSize(final int width, final int height) {
method saveBitmap (line 52) | public static void saveBitmap(final Bitmap bitmap) {
method saveBitmap (line 62) | public static void saveBitmap(final Bitmap bitmap, final String filena...
method convertYUV420SPToARGB8888 (line 87) | public static void convertYUV420SPToARGB8888(byte[] input, int width, ...
method YUV2RGB (line 106) | private static int YUV2RGB(int y, int u, int v) {
method convertYUV420ToARGB8888 (line 130) | public static void convertYUV420ToARGB8888(
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/Logger.java
class Logger (line 23) | public final class Logger {
method Logger (line 46) | public Logger(final Class<?> clazz) {
method Logger (line 55) | public Logger(final String messagePrefix) {
method Logger (line 70) | public Logger(final String tag, final String messagePrefix) {
method Logger (line 77) | public Logger() {
method Logger (line 82) | public Logger(final int minLogLevel) {
method getCallerSimpleName (line 99) | private static String getCallerSimpleName() {
method setMinLogLevel (line 115) | public void setMinLogLevel(final int minLogLevel) {
method isLoggable (line 119) | public boolean isLoggable(final int logLevel) {
method toMessage (line 123) | @SuppressWarnings("AnnotateFormatMethod")
method v (line 128) | @SuppressWarnings("AnnotateFormatMethod")
method v (line 135) | @SuppressWarnings("AnnotateFormatMethod")
method d (line 142) | @SuppressWarnings("AnnotateFormatMethod")
method d (line 149) | @SuppressWarnings("AnnotateFormatMethod")
method i (line 156) | @SuppressWarnings("AnnotateFormatMethod")
method i (line 163) | @SuppressWarnings("AnnotateFormatMethod")
method w (line 170) | @SuppressWarnings("AnnotateFormatMethod")
method w (line 177) | @SuppressWarnings("AnnotateFormatMethod")
method e (line 184) | @SuppressWarnings("AnnotateFormatMethod")
method e (line 191) | @SuppressWarnings("AnnotateFormatMethod")
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/Classifier.java
class Classifier (line 48) | public abstract class Classifier {
type Device (line 52) | public enum Device {
method create (line 100) | public static Classifier create(Activity activity, Device device, int ...
class Recognition (line 107) | public static class Recognition {
method Recognition (line 125) | public Recognition(
method getId (line 133) | public String getId() {
method getTitle (line 137) | public String getTitle() {
method getConfidence (line 141) | public Float getConfidence() {
method getLocation (line 145) | public RectF getLocation() {
method setLocation (line 149) | public void setLocation(RectF location) {
method toString (line 153) | @Override
method Classifier (line 177) | protected Classifier(Activity activity, Device device, int numThreads)...
method recognizeImage (line 219) | public List<Recognition> recognizeImage(final Bitmap bitmap, int senso...
method close (line 250) | public void close() {
method getImageSizeX (line 262) | public int getImageSizeX() {
method getImageSizeY (line 267) | public int getImageSizeY() {
method loadImage (line 272) | private TensorImage loadImage(final Bitmap bitmap, int sensorOrientati...
method getTopKProbability (line 291) | private static List<Recognition> getTopKProbability(Map<String, Float>...
method getModelPath (line 317) | protected abstract String getModelPath();
method getLabelPath (line 320) | protected abstract String getLabelPath();
method getPreprocessNormalizeOp (line 323) | protected abstract TensorOperator getPreprocessNormalizeOp();
method getPostprocessNormalizeOp (line 333) | protected abstract TensorOperator getPostprocessNormalizeOp();
FILE: lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/ClassifierFloatMobileNet.java
class ClassifierFloatMobileNet (line 25) | public class ClassifierFloatMobileNet extends Classifier {
method ClassifierFloatMobileNet (line 45) | public ClassifierFloatMobileNet(Activity activity, Device device, int ...
method getModelPath (line 51) | @Override
method getLabelPath (line 56) | @Override
method getPreprocessNormalizeOp (line 61) | @Override
method getPostprocessNormalizeOp (line 66) | @Override
FILE: lite/examples/acceleration_service/android_play_services/app/src/androidTest/java/org/tensorflow/lite/examples/accelerationservice/CustomValidationTest.java
class CustomValidationTest (line 52) | @RunWith(AndroidJUnit4.class)
method setUp (line 65) | @Before
method cpuCustomValidationOnPlainAdditionModel_succeeds (line 77) | @Test
method cpuCustomValidationOnMobileNetV1Model_succeeds (line 85) | @Test
method runScenario (line 93) | private Task<Boolean> runScenario(AssetModel assetModel) {
method getMainActivity (line 108) | private Task<MainActivity> getMainActivity() {
FILE: lite/examples/acceleration_service/android_play_services/app/src/androidTest/java/org/tensorflow/lite/examples/accelerationservice/NoopLogger.java
class NoopLogger (line 22) | class NoopLogger implements Logger {
method error (line 24) | @Override
method info (line 27) | @Override
method clear (line 30) | @Override
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/MainActivity.java
class MainActivity (line 57) | public class MainActivity extends AppCompatActivity {
method onCreate (line 70) | @Override
method runScenario (line 115) | public Task<Boolean> runScenario(
method runPlainAdditionCpuValidation (line 158) | private Task<Boolean> runPlainAdditionCpuValidation() {
method runMobileNetV1CpuValidation (line 165) | private Task<Boolean> runMobileNetV1CpuValidation() {
method runPlainAdditionGpuValidation (line 172) | private Task<Boolean> runPlainAdditionGpuValidation() {
method runMobileNetV1GpuValidation (line 179) | private Task<Boolean> runMobileNetV1GpuValidation() {
method runValidation (line 186) | private Task<Boolean> runValidation(
method runInference (line 201) | @WorkerThread
method initializeTfLite (line 212) | private Task<Void> initializeTfLite() {
method validateBenchmarkOutputs (line 226) | private boolean validateBenchmarkOutputs(
method createInterpreterOptions (line 236) | private Options createInterpreterOptions(ValidatedAccelerationConfigRe...
method getValues (line 261) | private Object[] getValues(Map<Integer, Object> map) {
method logTaskFailures (line 265) | private void logTaskFailures(Task<Boolean> task) {
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/logger/Logger.java
type Logger (line 20) | public interface Logger {
method error (line 22) | void error(String message, Exception e);
method info (line 25) | void info(String message);
method clear (line 28) | void clear();
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/logger/TextViewLogger.java
class TextViewLogger (line 28) | public class TextViewLogger implements Logger {
method TextViewLogger (line 35) | public TextViewLogger(AppCompatActivity activity, TextView output) {
method error (line 40) | @Override
method info (line 45) | @Override
method clear (line 50) | @Override
method logEvent (line 56) | @UiThread
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/AssetModel.java
type AssetModel (line 24) | public interface AssetModel {
method getModel (line 27) | Model getModel();
method getBatchSize (line 30) | int getBatchSize();
method getInputs (line 33) | Object[] getInputs();
method allocateOutputs (line 36) | Map<Integer, Object> allocateOutputs();
method validateBenchmarkOutputs (line 39) | boolean validateBenchmarkOutputs(ByteBuffer[] outputs);
method validateInterpreterOutputs (line 42) | boolean validateInterpreterOutputs(Object[] outputs);
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/AssetModelFactory.java
class AssetModelFactory (line 26) | public final class AssetModelFactory {
method AssetModelFactory (line 32) | public AssetModelFactory(Context context, Executor executor, Logger lo...
type ModelType (line 39) | public enum ModelType {
method load (line 45) | public Task<AssetModel> load(ModelType type) {
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/MobileNetV1.java
class MobileNetV1 (line 48) | final class MobileNetV1 implements AssetModel {
method MobileNetV1 (line 76) | public MobileNetV1(Context context, Logger logger) throws IOException {
method getModel (line 88) | @Override
method getBatchSize (line 93) | @Override
method getInputs (line 98) | @Override
method allocateOutputs (line 105) | @Override
method validateBenchmarkOutputs (line 112) | @Override
method validateInterpreterOutputs (line 123) | @Override
method validatePredictions (line 134) | private boolean validatePredictions(float[] predictions) {
method readImage (line 150) | private Bitmap readImage(String path) {
method loadImage (line 158) | private TensorImage loadImage(final Bitmap bitmapBuffer) {
method product (line 175) | private static final int product(int... values) {
method toFloatArray (line 183) | private static float[] toFloatArray(FloatBuffer output) {
method getTopKLabels (line 189) | private static List<Map.Entry<Integer, Float>> getTopKLabels(float[] l...
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/PlainAddition.java
class PlainAddition (line 31) | final class PlainAddition implements AssetModel {
method PlainAddition (line 46) | public PlainAddition(Context context, Logger logger) throws IOException {
method getModel (line 57) | @Override
method getBatchSize (line 62) | @Override
method getInputs (line 67) | @Override
method allocateOutputs (line 80) | @Override
method validateBenchmarkOutputs (line 89) | @Override
method validateInterpreterOutputs (line 101) | @Override
method validateOutput (line 117) | private boolean validateOutput(float[] input, float[] output) {
method generateInput (line 140) | private static float generateInput(int x) {
method product (line 144) | private static final int product(int... values) {
method toFloatArray (line 152) | private static float[] toFloatArray(ByteBuffer output) {
FILE: lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/validator/MeanSquaredErrorValidator.java
class MeanSquaredErrorValidator (line 29) | public class MeanSquaredErrorValidator implements AccuracyValidator {
method MeanSquaredErrorValidator (line 34) | public MeanSquaredErrorValidator(Logger logger, double threshold) {
method validate (line 44) | @Override
method checkMeanSquaredError (line 74) | private boolean checkMeanSquaredError(FloatBuffer expected, FloatBuffe...
FILE: lite/examples/audio_classification/raspberry_pi/classify.py
function run (line 25) | def run(model: str, max_results: int, score_threshold: float,
function main (line 92) | def main():
FILE: lite/examples/audio_classification/raspberry_pi/utils.py
class Plotter (line 29) | class Plotter(object):
method __init__ (line 35) | def __init__(self) -> None:
method plot (line 50) | def plot(self, result) -> None:
FILE: lite/examples/classification_by_retrieval/lib/labeled_image_helper.cc
type tflite (line 28) | namespace tflite {
type examples (line 29) | namespace examples {
type cbr (line 30) | namespace cbr {
function BuildFrameBufferFromImageData (line 43) | tflite::support::StatusOr<std::unique_ptr<FrameBuffer>>
function AddLabeledImageFromPath (line 58) | absl::Status AddLabeledImageFromPath(ModelBuilder* model_builder,
FILE: lite/examples/classification_by_retrieval/lib/labeled_image_helper.h
function namespace (line 25) | namespace tflite {
FILE: lite/examples/classification_by_retrieval/lib/model_builder.cc
type tflite (line 14) | namespace tflite {
type examples (line 15) | namespace examples {
type cbr (line 16) | namespace cbr {
FILE: lite/examples/classification_by_retrieval/lib/model_builder.h
function namespace (line 32) | namespace tflite {
FILE: lite/examples/classification_by_retrieval/lib/tflite_builder.cc
type tflite (line 32) | namespace tflite {
type examples (line 33) | namespace examples {
type cbr (line 34) | namespace cbr {
function BuiltinOperator (line 43) | BuiltinOperator GetBuiltinCode(const OperatorCodeT& op_code) {
function CreateQuantizationParameters (line 48) | Offset<QuantizationParameters> CreateQuantizationParameters(
class TfLiteBuilderImpl (line 58) | class TfLiteBuilderImpl : public TfLiteBuilder {
method AddTensor (line 70) | int AddTensor(const std::string& name, TensorType type,
method AddQuantizedTensor (line 75) | int AddQuantizedTensor(
method AddConstTensor (line 82) | int AddConstTensor(const std::string& name, TensorType type,
method AddQuantizedConstTensor (line 88) | int AddQuantizedConstTensor(
method TfLiteBuilderImpl (line 106) | explicit TfLiteBuilderImpl(FlatBufferBuilder* fbb) : fbb_(fbb) {}
FILE: lite/examples/classification_by_retrieval/lib/tflite_builder.h
function namespace (line 26) | namespace tflite {
FILE: lite/examples/classification_by_retrieval/lib/tflite_cbr_builder.cc
type tflite (line 28) | namespace tflite {
type examples (line 29) | namespace examples {
type cbr (line 30) | namespace cbr {
function FeatureVector (line 37) | FeatureVector Normalize(const FeatureVector& fv) {
function AddRetrievalBlock (line 49) | int AddRetrievalBlock(flatbuffers::FlatBufferBuilder* fb_builder,
function AddQuantizedRetrievalBlock (line 101) | int AddQuantizedRetrievalBlock(flatbuffers::FlatBufferBuilder* fb_...
function AddAggregationBlock (line 217) | int AddAggregationBlock(flatbuffers::FlatBufferBuilder* fb_builder,
FILE: lite/examples/classification_by_retrieval/lib/tflite_cbr_builder.h
function namespace (line 26) | namespace tflite {
FILE: lite/examples/gesture_classification/web/controller_dataset.js
class ControllerDataset (line 21) | class ControllerDataset {
method constructor (line 22) | constructor() {
method addExample (line 32) | addExample(example, label) {
method addLabels (line 51) | addLabels(numClasses) {
FILE: lite/examples/gesture_classification/web/index.js
function loadMobilenet (line 31) | async function loadMobilenet() {
function train (line 59) | async function train() {
function predict (line 139) | async function predict() {
function init (line 188) | async function init() {
FILE: lite/examples/gesture_classification/web/ui.js
constant CONTROLS (line 19) | const CONTROLS = [
function hideAllDropdowns (line 53) | function
function removeActiveClass (line 127) | function removeActiveClass() {
function timeout (line 197) | function timeout(ms) {
FILE: lite/examples/gesture_classification/web/webcam.js
class Webcam (line 21) | class Webcam {
method constructor (line 26) | constructor(webcamElement) {
method capture (line 36) | capture() {
method cropImage (line 62) | cropImage(img) {
method adjustVideoSize (line 79) | adjustVideoSize(width, height) {
method setup (line 88) | async setup() {
FILE: lite/examples/image_classification/android_java/app/src/androidTest/java/org/tensorflow/lite/examples/imageclassification/ImageClassificationTest.java
class ImageClassificationTest (line 42) | @RunWith(AndroidJUnit4.class)
method classificationResultsShouldNotChange (line 48) | @Test
method loadImage (line 84) | private Bitmap loadImage(String fileName) {
FILE: lite/examples/image_classification/android_java/app/src/main/java/org/tensorflow/lite/examples/imageclassification/ImageClassifierHelper.java
class ImageClassifierHelper (line 34) | public class ImageClassifierHelper {
method ImageClassifierHelper (line 54) | public ImageClassifierHelper(Float threshold,
method create (line 71) | public static ImageClassifierHelper create(
method getThreshold (line 86) | public float getThreshold() {
method setThreshold (line 90) | public void setThreshold(float threshold) {
method getNumThreads (line 94) | public int getNumThreads() {
method setNumThreads (line 98) | public void setNumThreads(int numThreads) {
method getMaxResults (line 102) | public int getMaxResults() {
method setMaxResults (line 106) | public void setMaxResults(int maxResults) {
method setCurrentDelegate (line 110) | public void setCurrentDelegate(int currentDelegate) {
method setCurrentModel (line 114) | public void setCurrentModel(int currentModel) {
method setupImageClassifier (line 118) | private void setupImageClassifier() {
method classify (line 174) | public void classify(Bitmap image, int imageRotation) {
method clearImageClassifier (line 202) | public void clearImageClassifier() {
type ClassifierListener (line 207) | public interface ClassifierListener {
method onError (line 208) | void onError(String error);
method onResults (line 210) | void onResults(List<Classifications> results, long inferenceTime);
FILE: lite/examples/image_classification/android_java/app/src/main/java/org/tensorflow/lite/examples/imageclassification/MainActivity.java
class MainActivity (line 26) | public class MainActivity extends AppCompatActivity {
method onCreate (line 28) | @Override
method onBackPressed (line 35) | @Override
FILE: lite/examples/image_classification/android_java/app/src/main/java/org/tensorflow/lite/examples/imageclassification/fragments/CameraFragment.java
class CameraFragment (line 52) | public class CameraFragment extends Fragment
method onCreateView (line 69) | @Nullable
method onResume (line 79) | @Override
method onDestroyView (line 91) | @Override
method onViewCreated (line 102) | @Override
method onConfigurationChanged (line 125) | @Override
method initBottomSheetControls (line 133) | private void initBottomSheetControls() {
method updateControlsUi (line 246) | private void updateControlsUi() {
method setUpCamera (line 263) | private void setUpCamera() {
method bindCameraUseCases (line 279) | private void bindCameraUseCases() {
method classifyImage (line 337) | private void classifyImage(@NonNull ImageProxy image) {
method onError (line 350) | @Override
method onResults (line 358) | @Override
FILE: lite/examples/image_classification/android_java/app/src/main/java/org/tensorflow/lite/examples/imageclassification/fragments/ClassificationResultAdapter.java
class ClassificationResultAdapter (line 34) | public class ClassificationResultAdapter
method updateResults (line 40) | @SuppressLint("NotifyDataSetChanged")
method updateAdapterSize (line 57) | public void updateAdapterSize(int size) {
method onCreateViewHolder (line 61) | @NonNull
method onBindViewHolder (line 69) | @Override
method getItemCount (line 74) | @Override
class ViewHolder (line 80) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 84) | public ViewHolder(@NonNull ItemClassificationResultBinding binding) {
method bind (line 90) | public void bind(Category category) {
FILE: lite/examples/image_classification/android_java/app/src/main/java/org/tensorflow/lite/examples/imageclassification/fragments/PermissionsFragment.java
class PermissionsFragment (line 31) | public class PermissionsFragment extends Fragment {
method hasPermission (line 37) | public static boolean hasPermission(Context context) {
method onStart (line 59) | @Override
method navigateToCamera (line 70) | private void navigateToCamera() {
FILE: lite/examples/image_classification/android_play_services/app/src/java/java/org/tensorflow/lite/examples/classification/playservices/CameraActivity.java
class CameraActivity (line 57) | public final class CameraActivity extends AppCompatActivity {
method onCreate (line 76) | @Override
method startInitialization (line 118) | private void startInitialization(boolean isGpuInitialized) {
method onDestroy (line 134) | @Override
method onResume (line 153) | @Override
method bindCameraUseCases (line 166) | @SuppressLint("UnsafeExperimentalUsageError")
class ClassificationAnalyzer (line 234) | private class ClassificationAnalyzer implements Analyzer {
method analyze (line 238) | @Override
method reportRecognition (line 277) | private void reportRecognition(List<Recognition> recognitions) {
method setUpCameraCaptureButton (line 304) | private View.OnClickListener setUpCameraCaptureButton() {
method requestPermission (line 336) | private ActivityResultLauncher<String> requestPermission() {
method hasPermission (line 349) | private boolean hasPermission(Context context) {
FILE: lite/examples/image_classification/android_play_services/app/src/java/java/org/tensorflow/lite/examples/classification/playservices/ImageClassificationHelper.java
class ImageClassificationHelper (line 50) | class ImageClassificationHelper implements Closeable {
class Recognition (line 71) | public static class Recognition {
method Recognition (line 75) | public Recognition(String title, Float confidence) {
method getTitle (line 80) | public String getTitle() {
method getConfidence (line 84) | public Float getConfidence() {
method create (line 94) | public static ImageClassificationHelper create(
method ImageClassificationHelper (line 137) | private ImageClassificationHelper(
method classify (line 151) | public List<Recognition> classify(final Bitmap bitmapBuffer, int image...
method close (line 168) | @Override
method loadImage (line 174) | private TensorImage loadImage(final Bitmap bitmapBuffer, int imageRota...
method getTopKProbability (line 196) | private static List<Recognition> getTopKProbability(
FILE: lite/examples/image_classification/metadata/metadata_writer_for_image_classifier.py
function define_flags (line 36) | def define_flags():
class ModelSpecificInfo (line 47) | class ModelSpecificInfo(object):
method __init__ (line 50) | def __init__(self, name, version, image_width, image_height, image_min,
class MetadataPopulatorForImageClassifier (line 80) | class MetadataPopulatorForImageClassifier(object):
method __init__ (line 83) | def __init__(self, model_file, model_info, label_file_path):
method populate (line 89) | def populate(self):
method _create_metadata (line 94) | def _create_metadata(self):
method _populate_metadata (line 165) | def _populate_metadata(self):
function main (line 173) | def main(_):
FILE: lite/examples/image_classification/raspberry_pi/classify.py
function run (line 34) | def run(model: str, max_results: int, score_threshold: float, num_thread...
function main (line 119) | def main():
FILE: lite/examples/image_segmentation/raspberry_pi/segment.py
function run (line 42) | def run(model: str, display_mode: str, num_threads: int, enable_edgetpu:...
function visualize (line 123) | def visualize(input_image: np.ndarray, segmentation_map_image: np.ndarray,
function main (line 182) | def main():
FILE: lite/examples/image_segmentation/raspberry_pi/utils.py
function segmentation_map_to_image (line 22) | def segmentation_map_to_image(
FILE: lite/examples/model_personalization/transfer_learning/generate_training_model.py
class TransferLearningModel (line 29) | class TransferLearningModel(tf.Module):
method __init__ (line 32) | def __init__(self, learning_rate=0.001):
method load (line 62) | def load(self, feature):
method train (line 81) | def train(self, bottleneck, label):
method infer (line 105) | def infer(self, feature):
method save (line 122) | def save(self, checkpoint_path):
method restore (line 141) | def restore(self, checkpoint_path):
method initialize_weights (line 168) | def initialize_weights(self):
function convert_and_save (line 179) | def convert_and_save(saved_model_dir='saved_model'):
FILE: lite/examples/native_api/android_play_services/c_api/app/src/androidTest/java/com/google/samples/gms/tflite/c/instrumentation/BasicScenarioTest.java
class BasicScenarioTest (line 33) | @RunWith(AndroidJUnit4.class)
method basicScenario (line 37) | @Test
FILE: lite/examples/native_api/android_play_services/c_api/app/src/androidTest/java/com/google/samples/gms/tflite/c/instrumentation/TfLiteNativeGPUAccelerationTest.java
class TfLiteNativeGPUAccelerationTest (line 37) | @RunWith(AndroidJUnit4.class)
method setUp (line 46) | @Before
method doInferenceWithAcceleration (line 54) | @Test
FILE: lite/examples/native_api/android_play_services/c_api/app/src/main/cpp/com_google_samples_gms_tflite_c_TfLiteJni.cc
function LogToCallback (line 46) | void LogToCallback(JNIEnv* env, jobject tfliteJni, const char* messageFo...
function Java_com_google_samples_gms_tflite_c_TfLiteJni_initGpuAcceleration (line 63) | void
function Java_com_google_samples_gms_tflite_c_TfLiteJni_loadModel (line 81) | void Java_com_google_samples_gms_tflite_c_TfLiteJni_loadModel(
function jfloatArray (line 99) | jfloatArray
function Java_com_google_samples_gms_tflite_c_TfLiteJni_destroy (line 130) | void Java_com_google_samples_gms_tflite_c_TfLiteJni_destroy(
function TfLiteInterpreter (line 149) | TfLiteInterpreter* CreateInterpreterFromModel(JNIEnv* env, jobject callb...
function TfLiteTensor (line 173) | TfLiteTensor* GetAndValidateInputTensor(JNIEnv* env, jobject tfliteJni,
function TfLiteTensor (line 204) | const TfLiteTensor* GetAndValidateOutputTensor(JNIEnv* env, jobject tfli...
FILE: lite/examples/native_api/android_play_services/c_api/app/src/main/cpp/java_interop.h
function namespace (line 25) | namespace util {
FILE: lite/examples/native_api/android_play_services/c_api/app/src/main/cpp/logging_assert.h
function namespace (line 43) | namespace logging {
FILE: lite/examples/native_api/android_play_services/c_api/app/src/main/java/com/google/samples/gms/tflite/c/MainActivity.java
class MainActivity (line 35) | public class MainActivity extends Activity {
method onCreate (line 43) | @Override
method onStart (line 53) | @Override
method runScenario (line 59) | private void runScenario() {
method logEvent (line 101) | private void logEvent(String message) {
method logEvent (line 105) | private void logEvent(String message, @Nullable Throwable throwable) {
FILE: lite/examples/native_api/android_play_services/c_api/app/src/main/java/com/google/samples/gms/tflite/c/TfLiteJni.java
class TfLiteJni (line 22) | public class TfLiteJni {
type LoggingCallback (line 29) | public interface LoggingCallback {
method printLogMessage (line 30) | void printLogMessage(String message);
method TfLiteJni (line 37) | public TfLiteJni(LoggingCallback loggingCallback) {
method sendLogMessage (line 41) | private void sendLogMessage(String message) {
method initGpuAcceleration (line 48) | public native void initGpuAcceleration();
method loadModel (line 54) | public native void loadModel(AssetManager assetManager, String assetNa...
method runInference (line 57) | public native float[] runInference(float[] input);
method destroy (line 60) | public native void destroy();
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/androidTest/java/com/google/samples/gms/tflite/c/instrumentation/BasicScenarioTest.java
class BasicScenarioTest (line 33) | @RunWith(AndroidJUnit4.class)
method basicScenario (line 37) | @Test
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/androidTest/java/com/google/samples/gms/tflite/c/instrumentation/TfLiteNativeGPUAccelerationTest.java
class TfLiteNativeGPUAccelerationTest (line 37) | @RunWith(AndroidJUnit4.class)
method setUp (line 46) | @Before
method doInferenceWithAcceleration (line 54) | @Test
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/main/cpp/com_google_samples_gms_tflite_cc_TfLiteJni.cc
function LogToCallback (line 55) | void LogToCallback(JNIEnv* env, jobject tfliteJni, const char* messageFo...
function Java_com_google_samples_gms_tflite_cc_TfLiteJni_initGpuAcceleration (line 72) | void
function Java_com_google_samples_gms_tflite_cc_TfLiteJni_loadModel (line 95) | void Java_com_google_samples_gms_tflite_cc_TfLiteJni_loadModel(
function jfloatArray (line 115) | jfloatArray
function Java_com_google_samples_gms_tflite_cc_TfLiteJni_destroy (line 145) | void Java_com_google_samples_gms_tflite_cc_TfLiteJni_destroy(
function CreateInterpreterFromModel (line 163) | std::unique_ptr<tflite::Interpreter> CreateInterpreterFromModel(
function TfLiteTensor (line 198) | TfLiteTensor* GetAndValidateInputTensor(JNIEnv* env, jobject tfliteJni,
function TfLiteTensor (line 229) | const TfLiteTensor* GetAndValidateOutputTensor(
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/main/cpp/java_interop.h
function namespace (line 25) | namespace util {
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/main/cpp/logging_assert.h
function namespace (line 43) | namespace logging {
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/main/java/com/google/samples/gms/tflite/cc/MainActivity.java
class MainActivity (line 35) | public class MainActivity extends Activity {
method onCreate (line 43) | @Override
method onStart (line 53) | @Override
method runScenario (line 59) | private void runScenario() {
method logEvent (line 101) | private void logEvent(String message) {
method logEvent (line 105) | private void logEvent(String message, @Nullable Throwable throwable) {
FILE: lite/examples/native_api/android_play_services/cc_api/app/src/main/java/com/google/samples/gms/tflite/cc/TfLiteJni.java
class TfLiteJni (line 22) | public class TfLiteJni {
type LoggingCallback (line 29) | public interface LoggingCallback {
method printLogMessage (line 30) | void printLogMessage(String message);
method TfLiteJni (line 37) | public TfLiteJni(LoggingCallback loggingCallback) {
method sendLogMessage (line 41) | private void sendLogMessage(String message) {
method initGpuAcceleration (line 48) | public native void initGpuAcceleration();
method loadModel (line 54) | public native void loadModel(AssetManager assetManager, String assetNa...
method runInference (line 57) | public native float[] runInference(float[] input);
method destroy (line 60) | public native void destroy();
FILE: lite/examples/object_detection/raspberry_pi/detect.py
function run (line 26) | def run(model: str, camera_id: int, width: int, height: int, num_threads...
function main (line 109) | def main():
FILE: lite/examples/object_detection/raspberry_pi/utils.py
function visualize (line 27) | def visualize(
FILE: lite/examples/pose_estimation/raspberry_pi/data.py
class BodyPart (line 22) | class BodyPart(enum.Enum):
class Point (line 43) | class Point(NamedTuple):
class Rectangle (line 49) | class Rectangle(NamedTuple):
class KeyPoint (line 55) | class KeyPoint(NamedTuple):
class Person (line 62) | class Person(NamedTuple):
function person_from_keypoints_with_scores (line 70) | def person_from_keypoints_with_scores(
class Category (line 117) | class Category(NamedTuple):
FILE: lite/examples/pose_estimation/raspberry_pi/ml/classifier.py
class Classifier (line 33) | class Classifier(object):
method __init__ (line 36) | def __init__(self, model_name: str, label_file: str) -> None:
method _load_labels (line 59) | def _load_labels(self, label_path: str) -> List[str]:
method classify_pose (line 71) | def classify_pose(self, person: Person) -> List[Category]:
FILE: lite/examples/pose_estimation/raspberry_pi/ml/classifier_test.py
class ClassifierTest (line 28) | class ClassifierTest(unittest.TestCase):
method test_pose_classification (line 30) | def test_pose_classification(self):
FILE: lite/examples/pose_estimation/raspberry_pi/ml/movenet.py
class Movenet (line 36) | class Movenet(object):
method __init__ (line 45) | def __init__(self, model_name: str) -> None:
method init_crop_region (line 70) | def init_crop_region(self, image_height: int,
method _torso_visible (line 107) | def _torso_visible(self, keypoints: np.ndarray) -> bool:
method _determine_torso_and_body_range (line 132) | def _determine_torso_and_body_range(self, keypoints: np.ndarray,
method _determine_crop_region (line 183) | def _determine_crop_region(self, keypoints: np.ndarray, image_height: ...
method _crop_and_resize (line 257) | def _crop_and_resize(
method _run_detector (line 285) | def _run_detector(
method detect (line 322) | def detect(self,
FILE: lite/examples/pose_estimation/raspberry_pi/ml/movenet_multipose.py
class MoveNetMultiPose (line 42) | class MoveNetMultiPose(object):
method __init__ (line 45) | def __init__(self,
method detect (line 87) | def detect(self,
method _postprocess (line 131) | def _postprocess(self, keypoints_with_scores: np.ndarray, image_height...
FILE: lite/examples/pose_estimation/raspberry_pi/ml/movenet_multipose_test.py
class MovenetMultiPoseTest (line 34) | class MovenetMultiPoseTest(unittest.TestCase):
method setUp (line 36) | def setUp(self):
method _assert (line 65) | def _assert(self, keypoints: List[KeyPoint],
method test_pose_estimation_image1_multipose (line 86) | def test_pose_estimation_image1_multipose(self):
method test_pose_estimation_image2_multipose (line 91) | def test_pose_estimation_image2_multipose(self):
FILE: lite/examples/pose_estimation/raspberry_pi/ml/movenet_test.py
class MovenetTest (line 33) | class MovenetTest(unittest.TestCase):
method setUp (line 35) | def setUp(self):
method _detect_and_assert (line 50) | def _detect_and_assert(self, detector: Movenet, image: np.ndarray,
method test_pose_estimation_image1_lightning (line 74) | def test_pose_estimation_image1_lightning(self):
method test_pose_estimation_image1_thunder (line 79) | def test_pose_estimation_image1_thunder(self):
method test_pose_estimation_image2_lightning (line 84) | def test_pose_estimation_image2_lightning(self):
method test_pose_estimation_image2_thunder (line 89) | def test_pose_estimation_image2_thunder(self):
FILE: lite/examples/pose_estimation/raspberry_pi/ml/posenet.py
class Posenet (line 34) | class Posenet(object):
method __init__ (line 37) | def __init__(self, model_name: str) -> None:
method detect (line 61) | def detect(self, input_image: np.ndarray) -> Person:
method _sigmoid (line 104) | def _sigmoid(self, x: np.ndarray) -> float:
method _process_output (line 107) | def _process_output(self, heatmap_data: np.ndarray,
FILE: lite/examples/pose_estimation/raspberry_pi/ml/posenet_test.py
class PosenetTest (line 32) | class PosenetTest(unittest.TestCase):
method setUp (line 34) | def setUp(self):
method _detect_and_assert (line 49) | def _detect_and_assert(self, detector: Posenet, image: np.ndarray,
method test_pose_estimation_image1 (line 72) | def test_pose_estimation_image1(self):
method test_pose_estimation_image2 (line 76) | def test_pose_estimation_image2(self):
FILE: lite/examples/pose_estimation/raspberry_pi/pose_estimation.py
function run (line 28) | def run(estimation_model: str, tracker_type: str, classification_model: ...
function main (line 157) | def main():
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/bounding_box_tracker.py
class BoundingBoxTracker (line 23) | class BoundingBoxTracker(Tracker):
method _compute_similarity (line 29) | def _compute_similarity(self, persons: List[Person]) -> List[List[floa...
method _iou (line 50) | def _iou(self, person: Person, track: Track) -> float:
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/bounding_box_tracker_test.py
class BoundingBoxTrackerTest (line 31) | class BoundingBoxTrackerTest(unittest.TestCase):
method setUp (line 33) | def setUp(self):
method test_iou (line 39) | def test_iou(self):
method test_iou_full_overlap (line 47) | def test_iou_full_overlap(self):
method test_iou_no_intersection (line 54) | def test_iou_no_intersection(self):
method test_bounding_box_tracker (line 62) | def test_bounding_box_tracker(self):
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/config.py
class KeypointTrackerConfig (line 18) | class KeypointTrackerConfig(NamedTuple):
class TrackerConfig (line 44) | class TrackerConfig(NamedTuple):
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/keypoint_tracker.py
class KeypointTracker (line 24) | class KeypointTracker(Tracker):
method _compute_similarity (line 31) | def _compute_similarity(self, persons: List[Person]) -> List[List[floa...
method _object_keypoint_similarity (line 52) | def _object_keypoint_similarity(self, person: Person, track: Track) ->...
method _area (line 101) | def _area(self, track: Track) -> float:
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/keypoint_tracker_test.py
class KeypointTrackerTest (line 34) | class KeypointTrackerTest(unittest.TestCase):
method setUp (line 36) | def setUp(self):
method test_oks (line 44) | def test_oks(self):
method test_oks_returns_zero (line 69) | def test_oks_returns_zero(self):
method test_area (line 88) | def test_area(self):
method test_keypoint_tracker (line 102) | def test_keypoint_tracker(self):
FILE: lite/examples/pose_estimation/raspberry_pi/tracker/tracker.py
class Track (line 23) | class Track(NamedTuple):
class Tracker (line 31) | class Tracker(object):
method __init__ (line 38) | def __init__(self, config: TrackerConfig) -> None:
method apply (line 44) | def apply(self, persons: List[Person], timestamp: int) -> List[Person]:
method _compute_similarity (line 62) | def _compute_similarity(self, persons: List[Person]) -> List[List[floa...
method _filter_old_tracks (line 74) | def _filter_old_tracks(self, timestamp: int) -> List[Track]:
method _assign_tracks (line 89) | def _assign_tracks(self, persons: List[Person], sim_matrix: List[List[...
method _update_tracks (line 144) | def _update_tracks(self) -> None:
method _create_track (line 163) | def _create_track(self,
method _update_and_get_next_track_id (line 184) | def _update_and_get_next_track_id(self):
method _remove (line 189) | def _remove(self, ids: List[str]) -> None:
method _reset (line 193) | def _reset(self) -> None:
FILE: lite/examples/pose_estimation/raspberry_pi/utils.py
function visualize (line 62) | def visualize(
function keep_aspect_ratio_resizer (line 127) | def keep_aspect_ratio_resizer(
FILE: lite/examples/pose_estimation/raspberry_pi/visualizer.py
function _visualize_detection_result (line 48) | def _visualize_detection_result(input_image, ground_truth):
function _create_ground_truth_csv (line 93) | def _create_ground_truth_csv(input_images, ground_truth_csv_path):
function main (line 127) | def main():
FILE: lite/examples/posenet/android/posenet/src/androidTest/java/org/tensorflow/lite/examples/posenet/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 32) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 34) | @Test
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/Config.java
class Config (line 24) | public final class Config {
class Feature (line 40) | public static class Feature {
method Config (line 77) | public Config() {}
method validate (line 79) | public boolean validate() {
method useGenres (line 110) | public boolean useGenres() {
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/MainActivity.java
class MainActivity (line 33) | public class MainActivity extends AppCompatActivity
method onCreate (line 48) | @Override
method onStart (line 78) | @Override
method onStop (line 94) | @Override
method recommend (line 105) | private void recommend(final List<MovieItem> movies) {
method showResult (line 118) | private void showResult(final List<Result> recommendations) {
method onItemSelectionChange (line 123) | @Override
method onClickRecommendedMovie (line 151) | @Override
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/MovieFragment.java
class MovieFragment (line 37) | public class MovieFragment extends Fragment {
method MovieFragment (line 49) | public MovieFragment() {}
method newInstance (line 51) | @SuppressWarnings("unused")
method onCreate (line 60) | @Override
method onCreateView (line 69) | @Override
method setMovies (line 88) | public void setMovies(List<MovieItem> movies) {
method onAttach (line 93) | @Override
method onDetach (line 104) | @Override
type OnListFragmentInteractionListener (line 119) | public interface OnListFragmentInteractionListener {
method onItemSelectionChange (line 120) | void onItemSelectionChange(MovieItem item);
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/MovieRecyclerViewAdapter.java
class MovieRecyclerViewAdapter (line 33) | public class MovieRecyclerViewAdapter
method MovieRecyclerViewAdapter (line 38) | public MovieRecyclerViewAdapter(
method onCreateViewHolder (line 44) | @Override
method onBindViewHolder (line 52) | @Override
method getItemCount (line 81) | @Override
class ViewHolder (line 87) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 95) | public ViewHolder(View view, OnListFragmentInteractionListener liste...
method setSelected (line 103) | public void setSelected(boolean selected) {
method toString (line 113) | @Override
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/RecommendationClient.java
class RecommendationClient (line 37) | public class RecommendationClient {
class Result (line 48) | public static class Result {
method Result (line 59) | public Result(final int id, final MovieItem item, final float confid...
method toString (line 65) | @Override
method RecommendationClient (line 71) | public RecommendationClient(Context context, Config config) {
method load (line 81) | @WorkerThread
method loadModel (line 91) | @WorkerThread
method loadCandidateList (line 103) | @WorkerThread
method loadGenreList (line 120) | @WorkerThread
method unload (line 136) | @WorkerThread
method preprocessIds (line 142) | int[] preprocessIds(List<MovieItem> selectedMovies, int length) {
method preprocessGenres (line 156) | int[] preprocessGenres(List<MovieItem> selectedMovies, int length) {
method preprocess (line 177) | @WorkerThread
method postprocess (line 198) | @WorkerThread
method recommend (line 229) | @WorkerThread
method getTflite (line 244) | Interpreter getTflite() {
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/RecommendationFragment.java
class RecommendationFragment (line 38) | public class RecommendationFragment extends Fragment {
method RecommendationFragment (line 50) | public RecommendationFragment() {}
method newInstance (line 53) | @SuppressWarnings("unused")
method onCreate (line 62) | @Override
method onCreateView (line 71) | @Override
method setRecommendations (line 90) | public void setRecommendations(List<Result> recommendedMovies) {
method onAttach (line 96) | @Override
method onDetach (line 107) | @Override
type OnListFragmentInteractionListener (line 122) | public interface OnListFragmentInteractionListener {
method onClickRecommendedMovie (line 123) | void onClickRecommendedMovie(MovieItem item);
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/RecommendationRecyclerViewAdapter.java
class RecommendationRecyclerViewAdapter (line 32) | public class RecommendationRecyclerViewAdapter
method RecommendationRecyclerViewAdapter (line 38) | public RecommendationRecyclerViewAdapter(
method onCreateViewHolder (line 44) | @Override
method onBindViewHolder (line 52) | @Override
method getItemCount (line 73) | @Override
class ViewHolder (line 79) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 86) | public ViewHolder(View view) {
method toString (line 94) | @Override
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/data/FileUtil.java
class FileUtil (line 40) | public class FileUtil {
method FileUtil (line 42) | private FileUtil() {}
method loadModelFile (line 45) | public static MappedByteBuffer loadModelFile(AssetManager assetManager...
method loadMovieList (line 57) | public static Collection<MovieItem> loadMovieList(
method loadGenreList (line 65) | public static List<String> loadGenreList(AssetManager assetManager, St...
method loadConfig (line 73) | public static Config loadConfig(AssetManager assetManager, String conf...
method loadFileContent (line 81) | private static String loadFileContent(AssetManager assetManager, Strin...
FILE: lite/examples/recommendation/android/app/src/main/java/org/tensorflow/lite/examples/recommendation/data/MovieItem.java
class MovieItem (line 23) | public class MovieItem {
method MovieItem (line 35) | private MovieItem() {
method MovieItem (line 39) | public MovieItem(int id, String title, List<String> genres, int count) {
method toString (line 46) | @Override
FILE: lite/examples/recommendation/ml/configs/model_config.py
class ModelConfig (line 20) | class ModelConfig(object):
FILE: lite/examples/recommendation/ml/data/example_generation_movielens.py
function define_flags (line 62) | def define_flags():
class MovieInfo (line 82) | class MovieInfo(
method __new__ (line 88) | def __new__(cls,
function download_and_extract_data (line 98) | def download_and_extract_data(data_directory,
function read_data (line 130) | def read_data(data_directory, min_rating=None):
function convert_to_timelines (line 148) | def convert_to_timelines(ratings_df):
function generate_movies_dict (line 163) | def generate_movies_dict(movies_df):
function extract_year_from_title (line 173) | def extract_year_from_title(title):
function generate_feature_of_movie_years (line 180) | def generate_feature_of_movie_years(movies_dict, movies):
function generate_movie_genres (line 188) | def generate_movie_genres(movies_dict, movies):
function _pad_or_truncate_movie_feature (line 213) | def _pad_or_truncate_movie_feature(feature, max_len, pad_value):
function generate_examples_from_single_timeline (line 218) | def generate_examples_from_single_timeline(timeline,
function generate_examples_from_timelines (line 278) | def generate_examples_from_timelines(timelines,
function generate_movie_feature_vocabs (line 334) | def generate_movie_feature_vocabs(movies_df, movie_counts):
function write_tfrecords (line 369) | def write_tfrecords(tf_examples, filename):
function write_vocab_json (line 380) | def write_vocab_json(vocab, filename):
function write_vocab_txt (line 386) | def write_vocab_txt(vocab, filename):
function generate_datasets (line 392) | def generate_datasets(extracted_data_dir,
function main (line 459) | def main(_):
FILE: lite/examples/recommendation/ml/data/example_generation_movielens_test.py
class ExampleGenerationMovielensTest (line 226) | class ExampleGenerationMovielensTest(tf.test.TestCase):
method test_example_generation (line 228) | def test_example_generation(self):
method test_vocabs_generation (line 244) | def test_vocabs_generation(self):
FILE: lite/examples/recommendation/ml/model/context_encoder.py
function safe_div (line 24) | def safe_div(x, y):
class ContextEncoder (line 28) | class ContextEncoder(tf.keras.layers.Layer):
method __init__ (line 39) | def __init__(self,
method call (line 82) | def call(self, input_context: Dict[str, tf.Tensor]) -> tf.Tensor:
class FeatureGroupEncoder (line 109) | class FeatureGroupEncoder(tf.keras.layers.Layer):
method __init__ (line 118) | def __init__(self,
method call (line 173) | def call(self, input_context: Dict[str, tf.Tensor]) -> tf.Tensor:
FILE: lite/examples/recommendation/ml/model/context_encoder_test.py
class ContextEncoderTest (line 22) | class ContextEncoderTest(tf.test.TestCase):
method _create_test_feature_group (line 24) | def _create_test_feature_group(self,
method _create_test_input_config (line 39) | def _create_test_input_config(self):
method _create_test_model_config (line 65) | def _create_test_model_config(self):
method test_feature_group_encoder_bow (line 73) | def test_feature_group_encoder_bow(self):
method test_feature_group_encoder_cnn (line 88) | def test_feature_group_encoder_cnn(self):
method test_feature_group_encoder_lstm (line 103) | def test_feature_group_encoder_lstm(self):
method test_context_encoder (line 118) | def test_context_encoder(self):
FILE: lite/examples/recommendation/ml/model/dotproduct_similarity.py
class DotProductSimilarity (line 20) | class DotProductSimilarity(tf.keras.layers.Layer):
method call (line 27) | def call(self,
FILE: lite/examples/recommendation/ml/model/dotproduct_similarity_test.py
class DotproductSimilarityTest (line 20) | class DotproductSimilarityTest(tf.test.TestCase):
method test_dotproduct (line 22) | def test_dotproduct(self):
FILE: lite/examples/recommendation/ml/model/input_pipeline.py
class FeaturesAndVocabsByName (line 33) | class FeaturesAndVocabsByName(
method __new__ (line 39) | def __new__(cls, features_by_name=None, vocabs_by_name=None):
function _prepare_feature_vocab_table (line 45) | def _prepare_feature_vocab_table(
function _get_features_vocabs_for_groups (line 82) | def _get_features_vocabs_for_groups(
function get_features_and_vocabs_by_name (line 109) | def get_features_and_vocabs_by_name(
function _get_feature_spec (line 145) | def _get_feature_spec(feature_type: input_config_pb2.FeatureType,
function _get_serving_feature_spec (line 178) | def _get_serving_feature_spec(feature_name: str,
function get_serving_input_specs (line 190) | def get_serving_input_specs(
function decode_example (line 201) | def decode_example(
function get_input_dataset (line 246) | def get_input_dataset(data_filepattern: str,
FILE: lite/examples/recommendation/ml/model/input_pipeline_test.py
class InputPipelineTest (line 106) | class InputPipelineTest(tf.test.TestCase):
method _AssertSparseTensorValueEqual (line 108) | def _AssertSparseTensorValueEqual(self, a, b):
method setUp (line 113) | def setUp(self):
method test_features_vocabs_gen (line 126) | def test_features_vocabs_gen(self):
method test_decode_example (line 139) | def test_decode_example(self):
method test_get_input_dataset (line 161) | def test_get_input_dataset(self):
method test_get_serving_input_specs (line 173) | def test_get_serving_input_specs(self):
FILE: lite/examples/recommendation/ml/model/label_encoder.py
class LabelEncoder (line 23) | class LabelEncoder(tf.keras.layers.Layer):
method __init__ (line 31) | def __init__(self,
method label_name (line 56) | def label_name(self):
method encode (line 59) | def encode(self, input_label: tf.Tensor) -> tf.Tensor:
method call (line 76) | def call(self, inputs: Dict[str, tf.Tensor]):
FILE: lite/examples/recommendation/ml/model/label_encoder_test.py
class LabelEncoderTest (line 21) | class LabelEncoderTest(tf.test.TestCase):
method _create_test_input_config (line 23) | def _create_test_input_config(self):
method test_label_encoder (line 48) | def test_label_encoder(self):
FILE: lite/examples/recommendation/ml/model/losses.py
class BatchSoftmax (line 22) | class BatchSoftmax(tf.keras.losses.Loss):
method __init__ (line 29) | def __init__(self, name='batch_softmax', **kwargs):
method call (line 33) | def call(self, y_true: tf.Tensor, y_pred: tf.Tensor):
class GlobalSoftmax (line 55) | class GlobalSoftmax(tf.keras.losses.Loss):
method __init__ (line 63) | def __init__(self, name='global_softmax', **kwargs):
method call (line 67) | def call(self, y_true: tf.Tensor, y_pred: tf.Tensor):
FILE: lite/examples/recommendation/ml/model/losses_test.py
class KerasLossesTest (line 23) | class KerasLossesTest(tf.test.TestCase):
method test_batch_softmax_loss (line 25) | def test_batch_softmax_loss(self):
method test_global_softmax_loss (line 37) | def test_global_softmax_loss(self):
FILE: lite/examples/recommendation/ml/model/metrics.py
function _get_batch_similarities (line 22) | def _get_batch_similarities(batch_label, full_vocab_similarities):
class BatchRecall (line 27) | class BatchRecall(tf.keras.metrics.Recall):
method __init__ (line 30) | def __init__(self, top_k=1, name='batch_recall'):
method update_state (line 33) | def update_state(self, y_true, y_pred, sample_weight=None):
class GlobalRecall (line 51) | class GlobalRecall(tf.keras.metrics.Recall):
method __init__ (line 54) | def __init__(self, top_k=1, name='global_recall'):
method update_state (line 57) | def update_state(self, y_true, y_pred, sample_weight=None):
class BatchMeanRank (line 75) | class BatchMeanRank(tf.keras.metrics.Mean):
method __init__ (line 78) | def __init__(self, name='batch_mean_rank', **kwargs):
method update_state (line 81) | def update_state(self, y_true, y_pred, sample_weight=None): # pytype:...
class GlobalMeanRank (line 107) | class GlobalMeanRank(tf.keras.metrics.Mean):
method __init__ (line 110) | def __init__(self, name='global_mean_rank', **kwargs):
method update_state (line 113) | def update_state(self, y_true, y_pred, sample_weight=None): # pytype:...
FILE: lite/examples/recommendation/ml/model/metrics_test.py
class KerasMetricsTest (line 23) | class KerasMetricsTest(tf.test.TestCase):
method test_batch_recall_and_mean_rank (line 25) | def test_batch_recall_and_mean_rank(self):
method test_global_recall_and_mean_rank (line 39) | def test_global_recall_and_mean_rank(self):
FILE: lite/examples/recommendation/ml/model/recommendation_model.py
class RecommendationModel (line 24) | class RecommendationModel(tf.keras.Model):
method __init__ (line 27) | def __init__(self,
method call (line 49) | def call(self, inputs): # pytype: disable=signature-mismatch # overr...
method serve (line 77) | def serve(self, **kwargs):
FILE: lite/examples/recommendation/ml/model/recommendation_model_launcher.py
function define_flags (line 35) | def define_flags():
class SimpleCheckpoint (line 77) | class SimpleCheckpoint(tf.keras.callbacks.Callback):
method __init__ (line 80) | def __init__(self, checkpoint_manager):
method on_epoch_end (line 84) | def on_epoch_end(self, epoch, logs=None):
function _get_optimizer (line 89) | def _get_optimizer(learning_rate: float, gradient_clip_norm: float):
function _get_metrics (line 95) | def _get_metrics(eval_top_k: List[int]):
function compile_model (line 109) | def compile_model(model, eval_top_k, learning_rate, gradient_clip_norm):
function build_keras_model (line 118) | def build_keras_model(input_config: input_config_pb2.InputConfig,
function get_callbacks (line 141) | def get_callbacks(keras_model: tf.keras.Model,
function train_and_eval (line 158) | def train_and_eval(model: tf.keras.Model,
function save_model (line 178) | def save_model(checkpoint_path: str, export_dir: str,
function export_tflite (line 203) | def export_tflite(export_dir):
function export (line 216) | def export(checkpoint_path: str, input_config: input_config_pb2.InputCon...
function load_input_config (line 241) | def load_input_config():
function prepare_model_config (line 248) | def prepare_model_config():
function main (line 259) | def main(_):
FILE: lite/examples/recommendation/ml/model/recommendation_model_launcher_test.py
class RecommendationModelLauncherTest (line 112) | class RecommendationModelLauncherTest(tf.test.TestCase):
method _AssertSparseTensorValueEqual (line 114) | def _AssertSparseTensorValueEqual(self, a, b):
method _assertInputDetail (line 119) | def _assertInputDetail(self, input_details, index, name, shape):
method setUp (line 123) | def setUp(self):
method testModelTrainEvalExport (line 153) | def testModelTrainEvalExport(self):
FILE: lite/examples/recommendation/ml/model/recommendation_model_test.py
class RecommendationModelTest (line 22) | class RecommendationModelTest(tf.test.TestCase):
method _create_test_input_config (line 24) | def _create_test_input_config(self,
method _create_test_model_config (line 50) | def _create_test_model_config(self):
method test_model_train_bow (line 58) | def test_model_train_bow(self):
method test_model_train_cnn (line 88) | def test_model_train_cnn(self):
method test_model_train_lstm (line 118) | def test_model_train_lstm(self):
FILE: lite/examples/recommendation/ml/model/utils.py
function GetShardFilenames (line 29) | def GetShardFilenames(filepattern):
function ClipGradient (line 51) | def ClipGradient(
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/BoardCellAdapter.java
class BoardCellAdapter (line 27) | public class BoardCellAdapter extends BaseAdapter {
method BoardCellAdapter (line 36) | public BoardCellAdapter(
method getView (line 47) | @Override
method getCount (line 73) | @Override
method getItem (line 78) | @Override
method getItemId (line 83) | @Override
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/BoardCellStatus.java
type BoardCellStatus (line 20) | enum BoardCellStatus {
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/Constants.java
class Constants (line 20) | public final class Constants {
method Constants (line 34) | private Constants() {}
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/HiddenBoardCellStatus.java
type HiddenBoardCellStatus (line 20) | enum HiddenBoardCellStatus {
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/MainActivity.java
class MainActivity (line 35) | public class MainActivity extends AppCompatActivity {
method onCreate (line 56) | @Override
method initGame (line 161) | private void initGame() {
method initBoard (line 174) | private void initBoard(BoardCellStatus[][] board) {
method initHiddenBoard (line 180) | private void initHiddenBoard(HiddenBoardCellStatus[][] board) {
method placePlaneOnHiddenBoard (line 186) | private void placePlaneOnHiddenBoard(HiddenBoardCellStatus[][] hiddenB...
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/PlaneStrikeAgent.java
class PlaneStrikeAgent (line 28) | public abstract class PlaneStrikeAgent {
method PlaneStrikeAgent (line 35) | public PlaneStrikeAgent(Activity activity) throws IOException {
method predictNextMove (line 41) | protected abstract int predictNextMove(BoardCellStatus[][] board);
method runInference (line 44) | protected abstract void runInference();
method prepareModelInput (line 46) | protected abstract void prepareModelInput(BoardCellStatus[][] board);
method loadModelFile (line 49) | protected MappedByteBuffer loadModelFile(Activity activity) throws IOE...
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/RLAgent.java
class RLAgent (line 29) | public class RLAgent extends PlaneStrikeAgent {
method RLAgent (line 35) | public RLAgent(Activity activity) throws IOException {
method predictNextMove (line 43) | @Override
method runInference (line 70) | @Override
method prepareModelInput (line 76) | @Override
FILE: lite/examples/reinforcement_learning/android/app/src/main/java/org/tensorflow/lite/examples/reinforcementlearning/RLAgentFromTFAgents.java
class RLAgentFromTFAgents (line 29) | public class RLAgentFromTFAgents extends PlaneStrikeAgent {
method RLAgentFromTFAgents (line 33) | public RLAgentFromTFAgents(Activity activity) throws IOException {
method predictNextMove (line 38) | @Override
method runInference (line 54) | @Override
method prepareModelInput (line 64) | @Override
FILE: lite/examples/reinforcement_learning/ml/common.py
function play_game (line 43) | def play_game(predict_fn):
function compute_rewards (line 76) | def compute_rewards(game_result_log, gamma=GAMMA):
function initialize_random_hidden_board (line 87) | def initialize_random_hidden_board(board_size):
FILE: lite/examples/reinforcement_learning/ml/tf_agents/planestrike_py_environment.py
class PlaneStrikePyEnvironment (line 59) | class PlaneStrikePyEnvironment(py_environment.PyEnvironment):
method __init__ (line 62) | def __init__(self,
method set_boards (line 83) | def set_boards(self):
method current_time_step (line 89) | def current_time_step(self):
method observation_spec (line 92) | def observation_spec(self):
method action_spec (line 96) | def action_spec(self):
method _reset (line 100) | def _reset(self):
method _step (line 108) | def _step(self, action):
method render (line 156) | def render(self, mode: "human") -> np.ndarray:
FILE: lite/examples/reinforcement_learning/ml/tf_agents/training_tf_agents.py
function compute_avg_return_and_steps (line 52) | def compute_avg_return_and_steps(environment, policy, num_episodes=10):
function collect_episode (line 75) | def collect_episode(environment, policy, num_episodes, replay_buffer_obs...
function train_agent (line 88) | def train_agent(iterations, modeldir, logdir, policydir):
function main (line 197) | def main(argv: Sequence[str]) -> None:
FILE: lite/examples/reinforcement_learning/ml/tf_and_jax/gym_planestrike/gym_planestrike/envs/planestrike.py
class PlaneStrikeEnv (line 33) | class PlaneStrikeEnv(gym.Env):
method __init__ (line 38) | def __init__(self, board_size) -> None:
method step (line 44) | def step(self, action):
method reset (line 72) | def reset(self):
method render (line 76) | def render(self, mode='human'):
method close (line 80) | def close(self):
method set_board (line 83) | def set_board(self):
FILE: lite/examples/reinforcement_learning/ml/tf_and_jax/training_jax.py
class PolicyGradient (line 39) | class PolicyGradient(nn.Module):
method __call__ (line 43) | def __call__(self, x):
function create_optimizer (line 57) | def create_optimizer(learning_rate: float):
function compute_loss (line 61) | def compute_loss(logits, labels, rewards):
function train_step (line 68) | def train_step(model_optimizer, params, opt_state, game_board_log,
function run_inference (line 87) | def run_inference(model_params, board):
function train_agent (line 92) | def train_agent(iterations, modeldir, logdir):
function main (line 144) | def main(argv: Sequence[str]) -> None:
FILE: lite/examples/reinforcement_learning/ml/tf_and_jax/training_tf.py
function train_agent (line 30) | def train_agent(iterations, modeldir, logdir):
function main (line 82) | def main(argv: Sequence[str]) -> None:
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/extract_feature.cc
type tflite (line 32) | namespace tflite {
type ops (line 33) | namespace ops {
type custom (line 34) | namespace custom {
type extract (line 36) | namespace extract {
function Equals (line 41) | bool Equals(const string& x, const tflite::StringRef& strref) {
function IsValidNgram (line 52) | bool IsValidNgram(const tflite::StringRef& strref) {
function TfLiteStatus (line 61) | TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) {
function TfLiteStatus (line 79) | TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
function TfLiteRegistration (line 114) | TfLiteRegistration* Register_EXTRACT_FEATURES() {
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/extract_feature_test.cc
type tflite (line 25) | namespace tflite {
type ops (line 27) | namespace ops {
type custom (line 28) | namespace custom {
class ExtractFeatureOpModel (line 35) | class ExtractFeatureOpModel : public SingleOpModel {
method ExtractFeatureOpModel (line 37) | explicit ExtractFeatureOpModel(const std::vector<string>& input) {
method GetSignature (line 47) | std::vector<int> GetSignature() { return ExtractVector<int>(sign...
method GetWeight (line 48) | std::vector<float> GetWeight() { return ExtractVector<float>(wei...
function CalcFeature (line 56) | int CalcFeature(const string& str) {
function TEST (line 60) | TEST(ExtractFeatureOpTest, RegularInput) {
function TEST (line 70) | TEST(ExtractFeatureOpTest, OneInput) {
function TEST (line 77) | TEST(ExtractFeatureOpTest, ZeroInput) {
function TEST (line 84) | TEST(ExtractFeatureOpTest, AllBlacklistInput) {
function main (line 96) | int main(int argc, char** argv) {
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/normalize.cc
type tflite (line 35) | namespace tflite {
type ops (line 36) | namespace ops {
type custom (line 37) | namespace custom {
type normalize (line 39) | namespace normalize {
function TfLiteStatus (line 58) | TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
function TfLiteRegistration (line 103) | TfLiteRegistration* Register_NORMALIZE() {
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/normalize_test.cc
type tflite (line 25) | namespace tflite {
type ops (line 27) | namespace ops {
type custom (line 28) | namespace custom {
class NormalizeOpModel (line 35) | class NormalizeOpModel : public SingleOpModel {
method NormalizeOpModel (line 37) | explicit NormalizeOpModel(const string& input) {
method GetStringOutput (line 46) | std::vector<string> GetStringOutput() {
function TEST (line 62) | TEST(NormalizeOpTest, RegularInput) {
function TEST (line 69) | TEST(NormalizeOpTest, OneInput) {
function TEST (line 75) | TEST(NormalizeOpTest, EmptyInput) {
function main (line 86) | int main(int argc, char** argv) {
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/predict.cc
type tflite (line 41) | namespace tflite {
type ops (line 42) | namespace ops {
type custom (line 43) | namespace custom {
type predict (line 45) | namespace predict {
type PredictOption (line 47) | struct PredictOption {
method PredictOption (line 51) | static PredictOption* Cast(void* ptr) {
function WeightGreater (line 56) | bool WeightGreater(const std::pair<int32_t, float>& a,
function Free (line 76) | void Free(TfLiteContext* context, void* buffer) {
function TfLiteStatus (line 80) | TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) {
function TfLiteStatus (line 121) | TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
function TfLiteRegistration (line 171) | TfLiteRegistration* Register_PREDICT() {
FILE: lite/examples/smart_reply/android/app/libs/cc/ops/predict_test.cc
type tflite (line 25) | namespace tflite {
type ops (line 27) | namespace ops {
type custom (line 28) | namespace custom {
class PredictOpModel (line 35) | class PredictOpModel : public SingleOpModel {
method PredictOpModel (line 37) | PredictOpModel(std::initializer_list<int> input_signature_shape,
method SetInputSignature (line 56) | void SetInputSignature(std::initializer_list<int> data) {
method SetModelKey (line 60) | void SetModelKey(std::initializer_list<int> data) {
method SetModelLabel (line 64) | void SetModelLabel(std::initializer_list<int> data) {
method SetModelWeight (line 68) | void SetModelWeight(std::initializer_list<float> data) {
method GetLabel (line 72) | std::vector<int> GetLabel() { return ExtractVector<int>(output_l...
method GetWeight (line 73) | std::vector<float> GetWeight() {
method writeFloat32 (line 77) | void writeFloat32(float value, std::vector<uint8_t>* data) {
method writeInt32 (line 88) | void writeInt32(int32_t value, std::vector<uint8_t>* data) {
function TEST (line 108) | TEST(PredictOpTest, AllLabelsAreValid) {
function TEST (line 119) | TEST(PredictOpTest, MoreLabelsThanRequired) {
function TEST (line 130) | TEST(PredictOpTest, OneLabelDoesNotPassThreshold) {
function TEST (line 141) | TEST(PredictOpTest, NoneLabelPassThreshold) {
function TEST (line 152) | TEST(PredictOpTest, OnlyOneLabelGenerated) {
function TEST (line 163) | TEST(PredictOpTest, NoLabelGenerated) {
function main (line 179) | int main(int argc, char** argv) {
FILE: lite/examples/smart_reply/android/app/libs/cc/predictor.cc
type tflite (line 28) | namespace tflite {
type custom (line 29) | namespace custom {
type smartreply (line 30) | namespace smartreply {
function SplitSentence (line 33) | std::vector<std::string> SplitSentence(const std::string& input) {
function ExecuteTfLite (line 45) | void ExecuteTfLite(const std::string& sentence,
function GetSegmentPredictions (line 70) | void GetSegmentPredictions(
FILE: lite/examples/smart_reply/android/app/libs/cc/predictor.h
function namespace (line 25) | namespace custom {
FILE: lite/examples/smart_reply/android/app/libs/cc/predictor_test.cc
type tflite (line 29) | namespace tflite {
type custom (line 30) | namespace custom {
type smartreply (line 31) | namespace smartreply {
function string (line 38) | string GetModelFilePath() {
function string (line 42) | string GetSamplesFilePath() {
class PredictorTest (line 58) | class PredictorTest : public ::testing::Test {
method PredictorTest (line 60) | PredictorTest() {}
method SetUp (line 63) | void SetUp() override {
function TEST_F (line 71) | TEST_F(PredictorTest, GetSegmentPredictions) {
function TEST_F (line 90) | TEST_F(PredictorTest, TestTwoSentences) {
function TEST_F (line 109) | TEST_F(PredictorTest, TestBackoff) {
function TEST_F (line 123) | TEST_F(PredictorTest, BatchTest) {
function main (line 160) | int main(int argc, char **argv) {
FILE: lite/examples/smart_reply/android/app/libs/cc/smartreply_jni.cc
function T (line 30) | T CheckNotNull(JNIEnv* env, T&& t) {
function jniStringArrayToVector (line 38) | std::vector<std::string> jniStringArrayToVector(JNIEnv* env,
type JNIStorage (line 52) | struct JNIStorage {
function JNIEXPORT (line 57) | JNIEXPORT jlong JNICALL
function JNIEXPORT (line 78) | JNIEXPORT jobjectArray JNICALL
function JNIEXPORT (line 122) | JNIEXPORT void JNICALL
FILE: lite/examples/smart_reply/android/app/src/main/java/org/tensorflow/lite/examples/smartreply/AssetsUtil.java
class AssetsUtil (line 31) | public class AssetsUtil {
method AssetsUtil (line 33) | private AssetsUtil() {}
method getAssetFileDescriptorOrCached (line 39) | public static AssetFileDescriptor getAssetFileDescriptorOrCached(
method copyToCacheFile (line 54) | private static void copyToCacheFile(Context context, String assetPath,...
FILE: lite/examples/smart_reply/android/app/src/main/java/org/tensorflow/lite/examples/smartreply/MainActivity.java
class MainActivity (line 33) | public class MainActivity extends AppCompatActivity {
method onCreate (line 43) | @Override
method onStart (line 70) | @Override
method onStop (line 80) | @Override
method send (line 90) | private void send(final String message) {
FILE: lite/examples/smart_reply/android/app/src/main/java/org/tensorflow/lite/examples/smartreply/SmartReply.java
class SmartReply (line 25) | @Keep
method SmartReply (line 31) | @Keep
method getText (line 37) | public String getText() {
method getScore (line 41) | public float getScore() {
FILE: lite/examples/smart_reply/android/app/src/main/java/org/tensorflow/lite/examples/smartreply/SmartReplyClient.java
class SmartReplyClient (line 33) | public class SmartReplyClient implements AutoCloseable {
method SmartReplyClient (line 45) | public SmartReplyClient(Context context) {
method isLoaded (line 49) | public boolean isLoaded() {
method loadModel (line 53) | @WorkerThread
method predict (line 70) | @WorkerThread
method unloadModel (line 79) | @WorkerThread
method close (line 84) | @Override
method loadModelFile (line 92) | private MappedByteBuffer loadModelFile() throws IOException {
method loadBackoffList (line 103) | private String[] loadBackoffList() throws IOException {
method loadJNI (line 119) | @Keep
method predictJNI (line 122) | @Keep
method unloadJNI (line 125) | @Keep
FILE: lite/examples/sound_classification/raspberry_pi/classify.py
function run (line 25) | def run(model: str, max_results: int, score_threshold: float,
function main (line 92) | def main():
FILE: lite/examples/sound_classification/raspberry_pi/utils.py
class Plotter (line 29) | class Plotter(object):
method __init__ (line 35) | def __init__(self) -> None:
method plot (line 50) | def plot(self, result) -> None:
FILE: lite/examples/speech_commands/ml/callbacks.py
function log_loss (line 25) | def log_loss(y_true, y_pred, eps=1e-12):
class ConfusionMatrixCallback (line 32) | class ConfusionMatrixCallback(Callback):
method __init__ (line 34) | def __init__(self, validation_data, validation_steps, wanted_words, al...
method accuracies (line 47) | def accuracies(self, confusion_val):
method accuracy (line 58) | def accuracy(self, confusion_val):
method on_epoch_end (line 65) | def on_epoch_end(self, epoch, logs=None):
FILE: lite/examples/speech_commands/ml/classes.py
function get_classes (line 24) | def get_classes(wanted_only=False):
function get_int2label (line 38) | def get_int2label(wanted_only=False, extend_reversed=False):
function get_label2int (line 47) | def get_label2int(wanted_only=False, extend_reversed=False):
FILE: lite/examples/speech_commands/ml/generator.py
function prepare_words_list (line 42) | def prepare_words_list(wanted_words):
function which_set (line 47) | def which_set(filename, validation_percentage, testing_percentage):
function load_wav_file (line 68) | def load_wav_file(filename):
function save_wav_file (line 80) | def save_wav_file(filename, wav_data, sample_rate):
class AudioProcessor (line 98) | class AudioProcessor(object):
method __init__ (line 101) | def __init__(self,
method maybe_download_and_extract_dataset (line 122) | def maybe_download_and_extract_dataset(self, data_dir):
method prepare_data_index (line 127) | def prepare_data_index(self, silence_percentage, unknown_percentage,
method prepare_background_data (line 193) | def prepare_background_data(self):
method prepare_processing_graph (line 214) | def prepare_processing_graph(self, model_settings):
method set_size (line 266) | def set_size(self, mode):
method get_data (line 270) | def get_data(self,
method get_unprocessed_data (line 392) | def get_unprocessed_data(self, how_many, model_settings, mode):
method summary (line 428) | def summary(self):
FILE: lite/examples/speech_commands/ml/model.py
function preprocess (line 26) | def preprocess(x):
function preprocess_raw (line 32) | def preprocess_raw(x):
function relu6 (line 41) | def relu6(x):
function conv_1d_time_stacked_model (line 45) | def conv_1d_time_stacked_model(input_size=16000, num_classes=11):
function speech_model (line 114) | def speech_model(model_type, input_size, num_classes=11, *args, **kwargs):
function prepare_model_settings (line 121) | def prepare_model_settings(label_count,
FILE: lite/examples/speech_commands/ml/utils.py
function data_gen (line 23) | def data_gen(audio_processor,
function tf_roll (line 68) | def tf_roll(a, shift, a_len=16000):
FILE: lite/examples/super_resolution/android/app/src/main/cc/SuperResolution.cpp
type tflite (line 28) | namespace tflite {
type examples (line 29) | namespace examples {
type superresolution (line 30) | namespace superresolution {
FILE: lite/examples/super_resolution/android/app/src/main/cc/SuperResolution.h
function namespace (line 31) | namespace tflite {
FILE: lite/examples/super_resolution/android/app/src/main/cc/SuperResolution_jni.cpp
type tflite (line 26) | namespace tflite {
type examples (line 27) | namespace examples {
type superresolution (line 28) | namespace superresolution {
function JNIEXPORT (line 30) | JNIEXPORT jintArray JNICALL
function JNIEXPORT (line 56) | JNIEXPORT jlong JNICALL
function JNIEXPORT (line 73) | JNIEXPORT void JNICALL
FILE: lite/examples/super_resolution/android/app/src/main/java/org/tensorflow/lite/examples/superresolution/AssetsUtil.java
class AssetsUtil (line 31) | public class AssetsUtil {
method AssetsUtil (line 33) | private AssetsUtil() {}
method getAssetFileDescriptorOrCached (line 39) | public static AssetFileDescriptor getAssetFileDescriptorOrCached(
method copyToCacheFile (line 54) | private static void copyToCacheFile(Context context, String assetPath,...
FILE: lite/examples/super_resolution/android/app/src/main/java/org/tensorflow/lite/examples/superresolution/MainActivity.java
class MainActivity (line 44) | public class MainActivity extends AppCompatActivity {
method onCreate (line 71) | @Override
method onDestroy (line 165) | @Override
method setLRImageViewListener (line 171) | private void setLRImageViewListener(ImageView iv) {
method doSuperResolution (line 200) | @WorkerThread
method loadModelFile (line 205) | private MappedByteBuffer loadModelFile() throws IOException {
method showToast (line 216) | private void showToast(String str) {
method initTFLiteInterpreter (line 220) | private long initTFLiteInterpreter(boolean useGPU) {
method deinit (line 229) | private void deinit() {
method superResolutionFromJNI (line 233) | private native int[] superResolutionFromJNI(long superResolutionNative...
method initWithByteBufferFromJNI (line 235) | private native long initWithByteBufferFromJNI(MappedByteBuffer modelBu...
method deinitFromJNI (line 237) | private native void deinitFromJNI(long superResolutionNativeHandle);
FILE: lite/examples/video_classification/raspberry_pi/classify.py
function run (line 35) | def run(model: str, label: str, max_results: int, num_threads: int,
function main (line 130) | def main():
FILE: lite/examples/video_classification/raspberry_pi/video_classifier.py
class VideoClassifierOptions (line 32) | class VideoClassifierOptions(NamedTuple):
class Category (line 51) | class Category(NamedTuple):
class VideoClassifier (line 57) | class VideoClassifier(object):
method __init__ (line 65) | def __init__(
method clear (line 107) | def clear(self):
method _preprocess (line 121) | def _preprocess(self, image: np.ndarray) -> np.ndarray:
method classify (line 130) | def classify(self, frame: np.ndarray) -> List[Category]:
method _postprocess (line 154) | def _postprocess(self, logits: np.ndarray) -> List[Category]:
FILE: lite/examples/video_classification/raspberry_pi/video_classifier_test.py
class VideoClassifierTest (line 37) | class VideoClassifierTest(unittest.TestCase):
method setUp (line 39) | def setUp(self):
method _run_classification_with_frames (line 52) | def _run_classification_with_frames(self, classifier: VideoClassifier,
method test_default_option (line 61) | def test_default_option(self):
method test_allow_list (line 79) | def test_allow_list(self):
method test_deny_list (line 93) | def test_deny_list(self):
method test_score_threshold_option (line 106) | def test_score_threshold_option(self):
method test_max_results_option (line 121) | def test_max_results_option(self):
FILE: lite/tools/build_model_maker_api_docs.py
class OrderedDumper (line 40) | class OrderedDumper(yaml.dumper.Dumper):
function _dict_representer (line 44) | def _dict_representer(dumper, data):
class DeprecatedAPIFilter (line 68) | class DeprecatedAPIFilter(object):
method __init__ (line 71) | def __init__(self):
method _is_deprecated (line 79) | def _is_deprecated(self, path: Sequence[str], child_name: str) -> bool:
method __call__ (line 88) | def __call__(self, path: Sequence[str], parent: Any,
function main (line 95) | def main(_):
FILE: tensorflow_examples/lite/model_maker/cli/cli.py
class FormatDoc (line 32) | class FormatDoc(object):
method __init__ (line 35) | def __init__(self, *format_args, **format_kwargs):
method __call__ (line 39) | def __call__(self, fn):
class ModelMakerCLI (line 44) | class ModelMakerCLI(object):
method __init__ (line 51) | def __init__(self, tf=2):
method image_classification (line 55) | def image_classification(self,
method text_classification (line 75) | def text_classification(self,
method question_answer (line 94) | def question_answer(self,
function main (line 116) | def main():
FILE: tensorflow_examples/lite/model_maker/cli/cli_test.py
function patch_image (line 35) | def patch_image():
function patch_text (line 40) | def patch_text():
function patch_qa (line 45) | def patch_qa():
function patch_setup (line 50) | def patch_setup():
class CLITest (line 55) | class CLITest(parameterized.TestCase):
method test_init (line 62) | def test_init(self, tf_opt, expected_tf):
method test_image_classification_demo (line 74) | def test_image_classification_demo(self, opt, args, kwargs):
method test_image_classification_demo_lack_param (line 80) | def test_image_classification_demo_lack_param(self):
method test_text_classification_demo (line 92) | def test_text_classification_demo(self, opt, args, kwargs):
method test_text_classification_demo_lack_param (line 98) | def test_text_classification_demo_lack_param(self):
method test_question_answer_demo (line 110) | def test_question_answer_demo(self, opt, args, kwargs):
method test_question_answer_lack_param (line 119) | def test_question_answer_lack_param(self):
method test_invalid_command (line 126) | def test_invalid_command(self):
method test_help (line 137) | def test_help(self, opt):
FILE: tensorflow_examples/lite/model_maker/core/api/api_gen.py
function parse_arguments (line 31) | def parse_arguments():
function _read_golden_text (line 51) | def _read_golden_text(json_file: str) -> str:
function load_golden (line 58) | def load_golden(json_file: str) -> Dict[str, Sequence[str]]:
function run (line 64) | def run(output_dir: str, base_package: str, version: str) -> None:
function main (line 78) | def main() -> None:
FILE: tensorflow_examples/lite/model_maker/core/api/api_gen_test.py
class ApiGenTest (line 26) | class ApiGenTest(tf.test.TestCase):
method test_golden_api (line 28) | def test_golden_api(self):
method test_golden_api_doc (line 39) | def test_golden_api_doc(self):
FILE: tensorflow_examples/lite/model_maker/core/api/api_util.py
class Symbol (line 75) | class Symbol:
method from_callable (line 85) | def from_callable(cls, exported_name: str, func: Callable) -> 'Symbol':
method from_constant (line 100) | def from_constant(cls, exported_name: str, module: str,
method get_package_name (line 111) | def get_package_name(self) -> str:
method gen_import (line 115) | def gen_import(self) -> str:
method gen_parents_import (line 127) | def gen_parents_import(self) -> Dict[str, Sequence[str]]:
function split_name (line 142) | def split_name(name: str) -> List[str]:
function as_package (line 155) | def as_package(names: List[str]) -> str:
function as_path (line 160) | def as_path(names: List[str]) -> str:
function _get_module_and_name (line 168) | def _get_module_and_name(func: Callable) -> Tuple[str, str]:
class mm_export (line 175) | class mm_export: # pylint: disable=invalid-name
method __init__ (line 178) | def __init__(self, name: str):
method __call__ (line 183) | def __call__(self, func: Callable) -> Callable:
method export_constant (line 189) | def export_constant(self, module: str, name: str) -> None:
function _reset_apis (line 195) | def _reset_apis():
function _case_insensitive (line 201) | def _case_insensitive(s: str):
function generate_imports (line 206) | def generate_imports() -> Dict[str, Sequence[str]]:
function generate_package_doc (line 227) | def generate_package_doc(package_name):
function write_packages (line 232) | def write_packages(
function make_dirs_or_not (line 288) | def make_dirs_or_not(dirpath: Union[PathOrStrType]):
function write_python_file (line 294) | def write_python_file(filepath: PathOrStrType, package_doc: Optional[str],
function _version_line (line 306) | def _version_line(version: str):
function overwrite_version_in_package (line 311) | def overwrite_version_in_package(base_dir: PathOrStrType, version: str):
FILE: tensorflow_examples/lite/model_maker/core/api/api_util_test.py
class MMExportTest (line 24) | class MMExportTest(tf.test.TestCase):
method setUp (line 26) | def setUp(self):
method test_call (line 30) | def test_call(self):
method test_call_class (line 40) | def test_call_class(self):
method test_call_duplicated (line 50) | def test_call_duplicated(self):
method test_call_global_function (line 61) | def test_call_global_function(self):
method test_export_constant (line 80) | def test_export_constant(self):
class ApiUtilTest (line 91) | class ApiUtilTest(tf.test.TestCase):
method setUp (line 93) | def setUp(self):
method test_get_module_and_name (line 97) | def test_get_module_and_name(self):
method test_generate_imports (line 118) | def test_generate_imports(self):
method test_write_packages (line 154) | def test_write_packages(self):
FILE: tensorflow_examples/lite/model_maker/core/compat.py
function setup_tf_behavior (line 28) | def setup_tf_behavior(tf_version=_DEFAULT_TF_BEHAVIOR):
function get_tf_behavior (line 45) | def get_tf_behavior():
function get_compat_tf_versions (line 54) | def get_compat_tf_versions(compat_tf_versions=None):
FILE: tensorflow_examples/lite/model_maker/core/data_util/audio_dataloader.py
class ExamplesHelper (line 38) | class ExamplesHelper(object):
method from_examples_folder (line 42) | def from_examples_folder(cls, path, examples_filter_fn):
method __init__ (line 91) | def __init__(self, examples_in_absolute_path, labels):
method _get_index_to_label (line 97) | def _get_index_to_label(self, used_labels):
method _get_label_to_index (line 100) | def _get_label_to_index(self, index_to_label):
method shuffle (line 103) | def shuffle(self):
method filter (line 106) | def filter(self, labels):
method examples_and_label_indices (line 111) | def examples_and_label_indices(self):
method examples_and_labels (line 117) | def examples_and_labels(self):
method examples_and_label_indices_ds (line 124) | def examples_and_label_indices_ds(self):
class DataLoader (line 133) | class DataLoader(dataloader.ClassificationDataLoader):
method __init__ (line 136) | def __init__(self, dataset, size, index_to_label, spec, cache=False):
method __len__ (line 141) | def __len__(self):
method from_folder (line 151) | def from_folder(cls,
method from_esc50 (line 206) | def from_esc50(cls,
method split (line 262) | def split(self, fraction):
method gen_dataset (line 265) | def gen_dataset(self,
FILE: tensorflow_examples/lite/model_maker/core/data_util/audio_dataloader_test.py
function write_file (line 32) | def write_file(root, filepath):
function write_sample (line 39) | def write_sample(root,
function write_csv (line 51) | def write_csv(root, folder, filename, headers, rows):
class MockSpec (line 61) | class MockSpec(audio_spec.BaseSpec):
method __init__ (line 63) | def __init__(self, *args, **kwargs):
method create_model (line 67) | def create_model(self):
method run_classifier (line 70) | def run_classifier(self, *args, **kwargs):
method target_sample_rate (line 74) | def target_sample_rate(self):
method preprocess_ds (line 77) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
class Base (line 105) | class Base(tf.test.TestCase):
method _get_folder_path (line 107) | def _get_folder_path(self, sub_folder_name):
class LoadFromESC50Test (line 119) | class LoadFromESC50Test(Base):
method test_from_esc50 (line 121) | def test_from_esc50(self):
class ExamplesHelperTest (line 184) | class ExamplesHelperTest(Base):
method test_examples_helper (line 186) | def test_examples_helper(self):
class LoadFromFolderTest (line 218) | class LoadFromFolderTest(Base):
method test_spec (line 220) | def test_spec(self):
method test_no_audio_files_found (line 230) | def test_no_audio_files_found(self):
method test_failed_librosa_imoprt (line 237) | def test_failed_librosa_imoprt(self):
method test_from_folder (line 272) | def test_from_folder(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/data_util.py
function generate_elements (line 24) | def generate_elements(ds):
FILE: tensorflow_examples/lite/model_maker/core/data_util/dataloader.py
function shard (line 26) | def shard(ds, input_pipeline_context):
class DataLoader (line 36) | class DataLoader(object):
method __init__ (line 44) | def __init__(self, dataset, size=None):
method size (line 63) | def size(self) -> Optional[int]:
method gen_dataset (line 76) | def gen_dataset(self,
method __len__ (line 126) | def __len__(self):
method split (line 132) | def split(self, fraction):
method _split (line 146) | def _split(self, fraction, *args):
class ClassificationDataLoader (line 174) | class ClassificationDataLoader(DataLoader):
method __init__ (line 177) | def __init__(self, dataset, size, index_to_label):
method num_classes (line 182) | def num_classes(self):
method split (line 185) | def split(self, fraction):
FILE: tensorflow_examples/lite/model_maker/core/data_util/dataloader_test.py
class DataLoaderTest (line 25) | class DataLoaderTest(tf.test.TestCase):
method test_split (line 27) | def test_split(self):
method test_len (line 42) | def test_len(self):
method test_gen_dataset (line 48) | def test_gen_dataset(self):
class ClassificationDataLoaderTest (line 72) | class ClassificationDataLoaderTest(tf.test.TestCase):
method test_split (line 74) | def test_split(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/image_dataloader.py
function load_image (line 29) | def load_image(path):
function create_data (line 39) | def create_data(name, data, info, label_names):
class ImageClassifierDataLoader (line 50) | class ImageClassifierDataLoader(dataloader.ClassificationDataLoader):
method from_folder (line 54) | def from_folder(cls, filename, shuffle=True):
method from_tfds (line 109) | def from_tfds(cls, name):
FILE: tensorflow_examples/lite/model_maker/core/data_util/image_dataloader_test.py
function _fill_image (line 27) | def _fill_image(rgb, image_size):
function _write_filled_jpeg_file (line 34) | def _write_filled_jpeg_file(path, rgb, image_size):
class ImageDataLoaderTest (line 39) | class ImageDataLoaderTest(tf.test.TestCase):
method setUp (line 41) | def setUp(self):
method test_split (line 54) | def test_split(self):
method test_from_folder (line 71) | def test_from_folder(self):
method test_from_tfds (line 88) | def test_from_tfds(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/image_searcher_dataloader.py
class DataLoader (line 34) | class DataLoader(searcher_dataloader.DataLoader):
method __init__ (line 37) | def __init__(
method create (line 61) | def create(cls,
method load_from_folder (line 94) | def load_from_folder(self, path: str, mode: str = "r") -> None:
FILE: tensorflow_examples/lite/model_maker/core/data_util/metadata_loader.py
class MetadataType (line 26) | class MetadataType(enum.Enum):
class MetadataLoader (line 31) | class MetadataLoader(object):
method __init__ (line 34) | def __init__(self, func: Callable[..., AnyStr]) -> None:
method load (line 37) | def load(self, path: str, **kwargs) -> AnyStr:
method from_file_name (line 42) | def from_file_name(cls) -> "MetadataLoader":
method from_dat_file (line 51) | def from_dat_file(cls) -> "MetadataLoader":
FILE: tensorflow_examples/lite/model_maker/core/data_util/metadata_loader_test.py
class MetadataLoaderTest (line 21) | class MetadataLoaderTest(tf.test.TestCase):
method test_from_file_name (line 23) | def test_from_file_name(self):
method test_from_dat_file (line 28) | def test_from_dat_file(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader.py
function _get_label_map (line 37) | def _get_label_map(label_map):
function _group_csv_lines (line 63) | def _group_csv_lines(csv_file: str,
class DataLoader (line 103) | class DataLoader(dataloader.DataLoader):
method __init__ (line 106) | def __init__(self,
method from_pascal_voc (line 138) | def from_pascal_voc(
method from_csv (line 225) | def from_csv(
method from_cache (line 308) | def from_cache(cls, cache_prefix):
method gen_dataset (line 338) | def gen_dataset(self,
method split (line 364) | def split(self, fraction):
FILE: tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_test.py
class MockDetectorModelSpec (line 32) | class MockDetectorModelSpec(object):
method __init__ (line 34) | def __init__(self, model_name):
class ObjectDectectorDataLoaderTest (line 42) | class ObjectDectectorDataLoaderTest(tf.test.TestCase):
method test_from_pascal_voc (line 44) | def test_from_pascal_voc(self):
method test_from_csv (line 79) | def test_from_csv(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_util.py
function _get_cache_dir_or_create (line 43) | def _get_cache_dir_or_create(cache_dir: Optional[str]) -> str:
function _get_dir_basename (line 55) | def _get_dir_basename(dirname):
function get_cache_prefix_filename_from_pascal (line 60) | def get_cache_prefix_filename_from_pascal(images_dir: str,
function get_cache_prefix_filename_from_csv (line 88) | def get_cache_prefix_filename_from_csv(csv_file: str, num_shards: int) -...
class CacheFiles (line 105) | class CacheFiles:
function get_cache_files (line 113) | def get_cache_files(cache_dir: Optional[str],
function is_cached (line 151) | def is_cached(cache_files: CacheFiles) -> bool:
function is_all_cached (line 159) | def is_all_cached(cache_files_collection: Collection[CacheFiles]) -> bool:
function get_cache_files_sequence (line 164) | def get_cache_files_sequence(cache_dir: str, cache_prefix_filename: str,
class CacheFilesWriter (line 189) | class CacheFilesWriter(abc.ABC):
method __init__ (line 192) | def __init__(self,
method write_files (line 225) | def write_files(self, cache_files: CacheFiles, *args, **kwargs) -> None:
method _get_xml_dict (line 275) | def _get_xml_dict(self, *args, **kwargs) -> tf.train.Example:
class PascalVocCacheFilesWriter (line 280) | class PascalVocCacheFilesWriter(CacheFilesWriter):
method _get_xml_dict (line 283) | def _get_xml_dict(
function _get_xml_dict_from_csv_lines (line 316) | def _get_xml_dict_from_csv_lines(images_dir: str, image_filename: str,
class CsvCacheFilesWriter (line 357) | class CsvCacheFilesWriter(CacheFilesWriter):
method _get_xml_dict (line 360) | def _get_xml_dict(self, csv_lines: List[List[str]]) -> tf.train.Example:
FILE: tensorflow_examples/lite/model_maker/core/data_util/object_detector_dataloader_util_test.py
class CacheFilesTest (line 25) | class CacheFilesTest(tf.test.TestCase):
method test_get_cache_files (line 27) | def test_get_cache_files(self):
method test_filename_from_pascal (line 38) | def test_filename_from_pascal(self):
method test_filename_from_csv (line 82) | def test_filename_from_csv(self):
class CacheFilesWriterTest (line 100) | class CacheFilesWriterTest(tf.test.TestCase):
method test_pascal_voc_cache_writer (line 102) | def test_pascal_voc_cache_writer(self):
method test_csv_cache_writer (line 158) | def test_csv_cache_writer(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/recommendation_dataloader.py
class RecommendationDataLoader (line 33) | class RecommendationDataLoader(dataloader.DataLoader):
method __init__ (line 36) | def __init__(self, dataset, size, vocab):
method gen_dataset (line 62) | def gen_dataset(self,
method split (line 87) | def split(self, fraction):
method load_vocab (line 91) | def load_vocab(cls, vocab_file) -> collections.OrderedDict:
method _read_dataset (line 125) | def _read_dataset(cls, data_filepattern: str,
method download_and_extract_movielens (line 142) | def download_and_extract_movielens(cls, download_dir):
method generate_movielens_dataset (line 147) | def generate_movielens_dataset(
method get_num_classes (line 211) | def get_num_classes(cls, meta) -> int:
method from_movielens (line 226) | def from_movielens(cls,
FILE: tensorflow_examples/lite/model_maker/core/data_util/recommendation_dataloader_test.py
class RecommendationDataLoaderTest (line 23) | class RecommendationDataLoaderTest(tf.test.TestCase):
method setUp (line 25) | def setUp(self):
method test_download_and_extract_data (line 30) | def test_download_and_extract_data(self):
method test_generate_movielens_dataset (line 37) | def test_generate_movielens_dataset(self):
method test_from_movielens (line 61) | def test_from_movielens(self):
method test_split (line 79) | def test_split(self):
method test_gen_dataset (line 91) | def test_gen_dataset(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/recommendation_testutil.py
function _generate_fake_data (line 35) | def _generate_fake_data(data_dir):
function _write_file_by_lines (line 79) | def _write_file_by_lines(data, filename):
function setup_fake_testdata (line 87) | def setup_fake_testdata(obj):
function patch_download_and_extract_data (line 105) | def patch_download_and_extract_data(data_dir):
function get_input_spec (line 130) | def get_input_spec(encoder_type='cnn') -> recommendation_config.InputSpec:
function get_model_hparams (line 174) | def get_model_hparams() -> recommendation_config.ModelHParams:
FILE: tensorflow_examples/lite/model_maker/core/data_util/searcher_dataloader.py
class DataLoader (line 23) | class DataLoader(object):
method __init__ (line 26) | def __init__(
method __len__ (line 60) | def __len__(self):
method dataset (line 64) | def dataset(self) -> np.ndarray:
method metadata (line 83) | def metadata(self) -> List[AnyStr]:
method embedder_path (line 88) | def embedder_path(self) -> Optional[str]:
method append (line 92) | def append(self, data_loader: "DataLoader") -> None:
FILE: tensorflow_examples/lite/model_maker/core/data_util/searcher_dataloader_test.py
class SearcherDataloaderTest (line 29) | class SearcherDataloaderTest(tf.test.TestCase):
method setUp (line 31) | def setUp(self):
method test_concat_dataset (line 36) | def test_concat_dataset(self):
method test_append (line 50) | def test_append(self):
method test_init (line 68) | def test_init(self):
FILE: tensorflow_examples/lite/model_maker/core/data_util/text_dataloader.py
function _load (line 38) | def _load(tfrecord_file, meta_data_file, model_spec, is_training=None):
function _get_cache_filenames (line 58) | def _get_cache_filenames(cache_dir, model_spec, data_name, is_training):
function _get_cache_info (line 71) | def _get_cache_info(cache_dir, data_name, model_spec, is_training):
class TextClassifierDataLoader (line 84) | class TextClassifierDataLoader(dataloader.ClassificationDataLoader):
method from_folder (line 88) | def from_folder(cls,
method from_csv (line 166) | def from_csv(cls,
method _load_data (line 239) | def _load_data(cls, tfrecord_file, meta_data_file, model_spec):
method _save_data (line 247) | def _save_data(cls, examples, model_spec, label_names, tfrecord_file,
method _get_cache_info (line 268) | def _get_cache_info(cls, cache_dir, data_name, model_spec, is_training):
method _read_csv (line 281) | def _read_csv(cls, input_file, fieldnames=None, delimiter=',', quotech...
class QuestionAnswerDataLoader (line 293) | class QuestionAnswerDataLoader(dataloader.DataLoader):
method __init__ (line 296) | def __init__(self, dataset, size, version_2_with_negative, examples, f...
method from_squad (line 305) | def from_squad(cls,
method _generate_tf_record_from_squad_file (line 353) | def _generate_tf_record_from_squad_file(cls,
FILE: tensorflow_examples/lite/model_maker/core/data_util/text_dataloader_test.py
class MockClassifierModelSpec (line 34) | class MockClassifierModelSpec(object):
method __init__ (line 37) | def __init__(self, seq_len=4, index_to_label=None):
method get_name_to_features (line 41) | def get_name_to_features(self):
method select_data_from_record (line 49) | def select_data_from_record(self, record):
method convert_examples_to_features (line 55) | def convert_examples_to_features(self, examples, tfrecord_file, label_...
method get_config (line 75) | def get_config(self):
class MockQAModelSpec (line 79) | class MockQAModelSpec(object):
method __init__ (line 81) | def __init__(self, vocab_dir):
method get_name_to_features (line 93) | def get_name_to_features(self, is_training):
method select_data_from_record (line 109) | def select_data_from_record(self, record):
method get_config (line 123) | def get_config(self):
method convert_examples_to_features (line 132) | def convert_examples_to_features(self, examples, is_training, output_fn,
class LoaderFunctionTest (line 146) | class LoaderFunctionTest(tf.test.TestCase):
method setUp (line 148) | def setUp(self):
method test_load (line 152) | def test_load(self):
method test_get_cache_filenames (line 165) | def test_get_cache_filenames(self):
method _get_tfrecord_file (line 202) | def _get_tfrecord_file(self):
method _get_meta_data_file (line 215) | def _get_meta_data_file(self):
class TextClassifierDataLoaderTest (line 223) | class TextClassifierDataLoaderTest(tf.test.TestCase):
method _get_folder_path (line 228) | def _get_folder_path(self):
method _get_csv_file (line 241) | def _get_csv_file(self, is_training):
method test_split (line 258) | def test_split(self):
method test_from_csv (line 275) | def test_from_csv(self):
method test_from_folder (line 307) | def test_from_folder(self):
method _test_data (line 315) | def _test_data(self, data, model_spec, size, num_classes, index_to_lab...
class QuestionAnswerDataLoaderTest (line 325) | class QuestionAnswerDataLoaderTest(tf.test.TestCase, parameterized.TestC...
method test_from_squad (line 333) | def test_from_squad(self, test_file, is_training, version_2_with_negat...
FILE: tensorflow_examples/lite/model_maker/core/data_util/text_searcher_dataloader.py
class DataLoader (line 31) | class DataLoader(searcher_dataloader.DataLoader):
method __init__ (line 34) | def __init__(self, embedder: text_embedder.TextEmbedder) -> None:
method create (line 44) | def create(cls,
method load_from_csv (line 71) | def load_from_csv(self,
FILE: tensorflow_examples/lite/model_maker/core/data_util/text_searcher_dataloader_test.py
class TextSearcherDataloaderTest (line 23) | class TextSearcherDataloaderTest(parameterized.TestCase, tf.test.TestCase):
method setUp (line 25) | def setUp(self):
method test_from_csv (line 36) | def test_from_csv(self, l2_normalize, expected_value):
FILE: tensorflow_examples/lite/model_maker/core/export_format.py
class ExportFormat (line 26) | class ExportFormat(enum.Enum):
FILE: tensorflow_examples/lite/model_maker/core/file_util.py
function load_json_file (line 25) | def load_json_file(json_file):
function write_json_file (line 31) | def write_json_file(json_file, data):
FILE: tensorflow_examples/lite/model_maker/core/optimization/warmup.py
class WarmUp (line 23) | class WarmUp(tf.keras.optimizers.schedules.LearningRateSchedule):
method __init__ (line 26) | def __init__(self,
method __call__ (line 37) | def __call__(self, step):
method get_config (line 51) | def get_config(self):
FILE: tensorflow_examples/lite/model_maker/core/task/audio_classifier.py
class AudioClassifier (line 28) | class AudioClassifier(classification_model.ClassificationModel):
method train (line 36) | def train(self, train_data, validation_data, epochs, batch_size):
method create_model (line 59) | def create_model(self, num_classes, train_whole_model):
method _export_tflite (line 64) | def _export_tflite(self,
method confusion_matrix (line 86) | def confusion_matrix(self, data, batch_size=32):
method create (line 104) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/audio_classifier_test.py
class BrowserFFTWithoutPreprocessing (line 34) | class BrowserFFTWithoutPreprocessing(audio_spec.BrowserFFTSpec):
method preprocess_ds (line 36) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
class YAMNetWithoutPreprcessing (line 51) | class YAMNetWithoutPreprcessing(audio_spec.YAMNetSpec):
method preprocess_ds (line 53) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
function write_sample (line 64) | def write_sample(root,
class AudioClassifierTest (line 81) | class AudioClassifierTest(tf.test.TestCase):
method testBrowserFFT (line 83) | def testBrowserFFT(self):
method testYAMNet (line 87) | def testYAMNet(self):
method testConfusionMatrix (line 90) | def testConfusionMatrix(self):
method _test_spec (line 120) | def _test_spec(self, train_spec, tflite_eval_spec):
FILE: tensorflow_examples/lite/model_maker/core/task/classification_model.py
class ClassificationModel (line 30) | class ClassificationModel(custom_model.CustomModel):
method __init__ (line 37) | def __init__(self, model_spec, index_to_label, shuffle, train_whole_mo...
method evaluate (line 53) | def evaluate(self, data, batch_size=32):
method predict_top_k (line 67) | def predict_top_k(self, data, k=1, batch_size=32):
method _export_labels (line 97) | def _export_labels(self, label_filepath):
method evaluate_tflite (line 105) | def evaluate_tflite(self, tflite_filepath, data, postprocess_fn=None):
FILE: tensorflow_examples/lite/model_maker/core/task/classification_model_test.py
class MockClassificationModel (line 26) | class MockClassificationModel(classification_model.ClassificationModel):
method train (line 28) | def train(self, train_data, validation_data=None, **kwargs):
method export (line 31) | def export(self, **kwargs):
method evaluate (line 34) | def evaluate(self, data, **kwargs):
class ClassificationModelTest (line 38) | class ClassificationModelTest(tf.test.TestCase):
method setUp (line 40) | def setUp(self):
method test_predict_top_k (line 49) | def test_predict_top_k(self):
method test_export_labels (line 73) | def test_export_labels(self):
FILE: tensorflow_examples/lite/model_maker/core/task/configs.py
function _get_representative_dataset_gen (line 29) | def _get_representative_dataset_gen(dataset, num_steps):
class QuantizationConfig (line 54) | class QuantizationConfig(object):
method __init__ (line 62) | def __init__(
method for_dynamic (line 122) | def for_dynamic(cls):
method for_int8 (line 127) | def for_int8(cls,
method for_float16 (line 158) | def for_float16(cls):
method get_converter_with_quantization (line 162) | def get_converter_with_quantization(self, converter, **kwargs):
FILE: tensorflow_examples/lite/model_maker/core/task/custom_model.py
function _get_params (line 30) | def _get_params(f, **kwargs):
class CustomModel (line 40) | class CustomModel(abc.ABC):
method __init__ (line 47) | def __init__(self, model_spec, shuffle):
method train (line 62) | def train(self, train_data, validation_data=None, **kwargs):
method summary (line 65) | def summary(self):
method evaluate (line 69) | def evaluate(self, data, **kwargs):
method _get_default_export_format (line 72) | def _get_default_export_format(self, **kwargs):
method _get_export_format (line 80) | def _get_export_format(self, export_format, **kwargs):
method export (line 95) | def export(self,
method create_serving_model (line 170) | def create_serving_model(self):
method _export_saved_model (line 178) | def _export_saved_model(self,
method _export_tflite (line 205) | def _export_tflite(self, tflite_filepath, quantization_config=None):
method _export_tfjs (line 214) | def _export_tfjs(self, tfjs_filepath, tflite_filepath=None, **kwargs):
method _keras_callbacks (line 225) | def _keras_callbacks(self, model_dir):
FILE: tensorflow_examples/lite/model_maker/core/task/custom_model_test.py
class MockCustomModel (line 28) | class MockCustomModel(custom_model.CustomModel):
method _export_labels (line 34) | def _export_labels(self, label_filepath):
method train (line 38) | def train(self, train_data, validation_data=None, **kwargs):
method evaluate (line 41) | def evaluate(self, data, **kwargs):
class CustomModelTest (line 45) | class CustomModelTest(tf.test.TestCase):
method setUp (line 47) | def setUp(self):
method _check_nonempty_dir (line 54) | def _check_nonempty_dir(self, dirpath):
method _check_nonempty_file (line 58) | def _check_nonempty_file(self, filepath):
method test_export_saved_model (line 62) | def test_export_saved_model(self):
method test_export (line 67) | def test_export(self):
FILE: tensorflow_examples/lite/model_maker/core/task/hub_loader.py
class HubKerasLayerV1V2 (line 23) | class HubKerasLayerV1V2(hub.KerasLayer):
method _setup_layer (line 35) | def _setup_layer(self, trainable=False, **kwargs):
method _check_trainability (line 42) | def _check_trainability(self):
method _setup_layer_v1 (line 49) | def _setup_layer_v1(self, trainable=False, **kwargs):
method _check_trainability_v1 (line 94) | def _check_trainability_v1(self):
FILE: tensorflow_examples/lite/model_maker/core/task/hub_loader_test.py
class HubKerasLayerV1V2Test (line 26) | class HubKerasLayerV1V2Test(tf.test.TestCase, parameterized.TestCase):
method test_load_with_defaults (line 34) | def test_load_with_defaults(self, module_name, trainable):
method test_trainable_varaible (line 41) | def test_trainable_varaible(self):
FILE: tensorflow_examples/lite/model_maker/core/task/image_classifier.py
function get_hub_lib_hparams (line 37) | def get_hub_lib_hparams(**kwargs):
function _get_model_info (line 43) | def _get_model_info(model_spec,
class ImageClassifier (line 79) | class ImageClassifier(classification_model.ClassificationModel):
method __init__ (line 82) | def __init__(
method _get_tflite_input_tensors (line 120) | def _get_tflite_input_tensors(self, input_tensors):
method create_model (line 124) | def create_model(self, hparams=None, with_loss_and_metrics=False):
method train (line 142) | def train(self,
method _export_tflite (line 200) | def _export_tflite(self,
method _get_hparams_or_default (line 250) | def _get_hparams_or_default(self, hparams):
method create (line 255) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/image_classifier_test.py
function _fill_image (line 32) | def _fill_image(rgb, image_size):
class ImageClassifierTest (line 39) | class ImageClassifierTest(tf.test.TestCase):
method _gen (line 46) | def _gen(self):
method _gen_cmy_data (line 51) | def _gen_cmy_data(self):
method setUp (line 59) | def setUp(self):
method test_mobilenetv2_model (line 66) | def test_mobilenetv2_model(self):
method test_mobilenetv2_model_create_v1_incompatible (line 83) | def test_mobilenetv2_model_create_v1_incompatible(self):
method test_efficientnetlite0_model_with_model_maker_retraining_lib (line 89) | def test_efficientnetlite0_model_with_model_maker_retraining_lib(self):
method test_efficientnetlite0_model (line 101) | def test_efficientnetlite0_model(self):
method test_efficientnetlite0_model_without_training (line 116) | def test_efficientnetlite0_model_without_training(self):
method test_resnet_50_model (line 123) | def test_resnet_50_model(self):
method _test_predict_top_k (line 136) | def _test_predict_top_k(self, model, threshold=0.0):
method _test_accuracy (line 143) | def _test_accuracy(self, model, threshold=0.0):
method _load_labels (line 147) | def _load_labels(self, filename):
method _test_export_labels (line 151) | def _test_export_labels(self, model):
method _test_export_to_tflite (line 156) | def _test_export_to_tflite(self, model, threshold=0.0):
method _test_export_to_tflite_quantized (line 173) | def _test_export_to_tflite_quantized(self, model, model_size, err_rati...
method _check_label_file (line 185) | def _check_label_file(self, labels_output_file):
method _test_export_to_tflite_with_metadata (line 189) | def _test_export_to_tflite_with_metadata(self,
method _test_export_to_saved_model (line 217) | def _test_export_to_saved_model(self, model):
method _test_export_to_tfjs (line 224) | def _test_export_to_tfjs(self, model):
FILE: tensorflow_examples/lite/model_maker/core/task/image_classifier_v1_test.py
class ImageClassifierV1Test (line 24) | class ImageClassifierV1Test(image_classifier_test.ImageClassifierTest):
FILE: tensorflow_examples/lite/model_maker/core/task/image_preprocessing.py
class Preprocessor (line 27) | class Preprocessor(object):
method __init__ (line 30) | def __init__(self,
method __call__ (line 42) | def __call__(self, image, label, is_training=True):
method _preprocess_with_augmentation (line 47) | def _preprocess_with_augmentation(self, image, label, is_training):
method _preprocess_without_augmentation (line 62) | def _preprocess_without_augmentation(self, image, label):
function distorted_bounding_box_crop (line 74) | def distorted_bounding_box_crop(image,
function _at_least_x_are_equal (line 125) | def _at_least_x_are_equal(a, b, x):
function _resize_image (line 132) | def _resize_image(image, image_size, method=None):
function _decode_and_random_crop (line 141) | def _decode_and_random_crop(original_image, image_size, resize_method=No...
function _decode_and_center_crop (line 161) | def _decode_and_center_crop(image, image_size, resize_method=None):
function _flip (line 180) | def _flip(image):
function preprocess_for_train (line 186) | def preprocess_for_train(image,
function preprocess_for_eval (line 209) | def preprocess_for_eval(image,
FILE: tensorflow_examples/lite/model_maker/core/task/image_preprocessing_test.py
function _get_preprocessed_image (line 25) | def _get_preprocessed_image(preprocessor, is_training=False):
class PreprocessorTest (line 42) | class PreprocessorTest(tf.test.TestCase):
method test_without_augmentation (line 44) | def test_without_augmentation(self):
method test_with_augmentation (line 58) | def test_with_augmentation(self):
FILE: tensorflow_examples/lite/model_maker/core/task/make_image_classifier.py
class HParams (line 20) | class HParams(
function get_default_hparams (line 56) | def get_default_hparams():
function build_model (line 78) | def build_model(module_layer, hparams, image_size, num_classes):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writer_for_image_classifier.py
function define_flags (line 36) | def define_flags():
class ModelSpecificInfo (line 47) | class ModelSpecificInfo(object):
method __init__ (line 50) | def __init__(self, name, version, image_width, image_height, image_min,
class MetadataPopulatorForImageClassifier (line 80) | class MetadataPopulatorForImageClassifier(object):
method __init__ (line 83) | def __init__(self, model_file, model_info, label_file_path):
method populate (line 89) | def populate(self):
method _create_metadata (line 94) | def _create_metadata(self):
method _populate_metadata (line 165) | def _populate_metadata(self):
function main (line 173) | def main(_):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writers/bert/metadata_writer_for_bert.py
class Tokenizer (line 32) | class Tokenizer(enum.Enum):
function bert_qa_inputs (line 37) | def bert_qa_inputs(ids_name, mask_name, segment_ids_name):
class ModelSpecificInfo (line 57) | class ModelSpecificInfo(object):
method __init__ (line 60) | def __init__(self,
class MetadataPopulatorForBert (line 104) | class MetadataPopulatorForBert(metadata_writer.MetadataWriter):
method __init__ (line 107) | def __init__(self, model_file, export_directory, model_info):
method _create_metadata (line 118) | def _create_metadata(self):
method _create_input_metadata (line 151) | def _create_input_metadata(self):
method _create_output_metadata (line 196) | def _create_output_metadata(self):
method _create_bert_tokenizer (line 204) | def _create_bert_tokenizer(self):
method _create_sentence_piece_tokenizer (line 215) | def _create_sentence_piece_tokenizer(self):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writers/bert/question_answerer/metadata_writer_for_bert_question_answerer.py
function bert_qa_outputs (line 28) | def bert_qa_outputs(start_logits_name, end_logits_name):
class QuestionAnswererInfo (line 46) | class QuestionAnswererInfo(ModelSpecificInfo):
method __init__ (line 49) | def __init__(self,
class MetadataPopulatorForBertQuestionAndAnswer (line 119) | class MetadataPopulatorForBertQuestionAndAnswer(MetadataPopulatorForBert):
method _create_output_metadata (line 122) | def _create_output_metadata(self):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writers/bert/text_classifier/metadata_writer_for_bert_text_classifier.py
class ClassifierSpecificInfo (line 30) | class ClassifierSpecificInfo(ModelSpecificInfo):
method __init__ (line 33) | def __init__(self,
class MetadataPopulatorForBertTextClassifier (line 87) | class MetadataPopulatorForBertTextClassifier(MetadataPopulatorForBert):
method __init__ (line 90) | def __init__(self, model_file, export_directory, model_info):
method _create_output_metadata (line 104) | def _create_output_metadata(self):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writers/metadata_writer.py
class MetadataWriter (line 31) | class MetadataWriter(abc.ABC):
method __init__ (line 34) | def __init__(self, model_file, export_directory, associated_files):
method populate (line 48) | def populate(self, export_metadata_json_file=False):
method _create_metadata (line 54) | def _create_metadata(self):
method _get_subgraph (line 57) | def _get_subgraph(self):
method _get_input_tensor_names (line 70) | def _get_input_tensor_names(self):
method _get_output_tensor_names (line 80) | def _get_output_tensor_names(self):
method _order_tensor_metadata_with_names (line 90) | def _order_tensor_metadata_with_names(self, tensor_metadata, tensor_na...
method _populate_metadata (line 119) | def _populate_metadata(self, export_metadata_json_file=False):
FILE: tensorflow_examples/lite/model_maker/core/task/metadata_writers/text_classifier/metadata_writer_for_text_classifier.py
class ModelSpecificInfo (line 40) | class ModelSpecificInfo(object):
method __init__ (line 43) | def __init__(self,
class MetadataPopulatorForTextClassifier (line 70) | class MetadataPopulatorForTextClassifier(metadata_writer.MetadataWriter):
method __init__ (line 73) | def __init__(self, model_file, export_directory, model_info, label_fil...
method _create_metadata (line 80) | def _create_metadata(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/__init__.py
function get (line 102) | def get(spec_or_str, *args, **kwargs):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/audio_spec.py
class MetadataWriter (line 42) | class MetadataWriter:
method __init__ (line 61) | def __init__(self, tflite_filepath, **kwargs):
method __enter__ (line 67) | def __enter__(self):
method __exit__ (line 71) | def __exit__(self, exc_type, exc_val, exc_tb):
method add_input (line 76) | def add_input(self, **kwargs):
method add_output (line 80) | def add_output(self, name, labels, **kwargs):
method save (line 109) | def save(self, tflite_filepath=None, json_filepath=None):
function _ensure_tf25 (line 128) | def _ensure_tf25(tf_version):
function _get_tf_version (line 136) | def _get_tf_version():
class BaseSpec (line 140) | class BaseSpec(abc.ABC):
method __init__ (line 143) | def __init__(self, model_dir=None, strategy=None):
method target_sample_rate (line 152) | def target_sample_rate(self):
method create_model (line 156) | def create_model(self, num_classes, train_whole_model=False):
method run_classifier (line 160) | def run_classifier(self, model, epochs, train_ds, validation_ds, **kwa...
method preprocess_ds (line 163) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
method get_default_quantization_config (line 169) | def get_default_quantization_config(self):
function _remove_suffix_if_possible (line 174) | def _remove_suffix_if_possible(text, suffix):
function _load_browser_fft_preprocess_model (line 181) | def _load_browser_fft_preprocess_model():
function _load_tfjs_speech_command_model (line 201) | def _load_tfjs_speech_command_model():
class BrowserFFTSpec (line 217) | class BrowserFFTSpec(BaseSpec):
method __init__ (line 241) | def __init__(self, model_dir=None, strategy=None):
method target_sample_rate (line 255) | def target_sample_rate(self):
method _ensure_length (line 262) | def _ensure_length(self, wav, unused_label):
method _split (line 269) | def _split(self, wav, label):
method _preprocess (line 285) | def _preprocess(self, x, label):
method preprocess_ds (line 297) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
method create_model (line 308) | def create_model(self, num_classes, train_whole_model=False):
method run_classifier (line 326) | def run_classifier(self, model, epochs, train_ds, validation_ds, **kwa...
method create_serving_model (line 334) | def create_serving_model(self, training_model):
method _export_metadata (line 343) | def _export_metadata(self, tflite_filepath, index_to_label,
method export_tflite (line 368) | def export_tflite(self,
class YAMNetSpec (line 412) | class YAMNetSpec(BaseSpec):
method __init__ (line 440) | def __init__(
method target_sample_rate (line 473) | def target_sample_rate(self):
method create_model (line 476) | def create_model(self, num_classes, train_whole_model=False):
method run_classifier (line 487) | def run_classifier(self, model, epochs, train_ds, validation_ds, **kwa...
method _frame (line 503) | def _frame(self, wav, label):
method _extract_embedding (line 514) | def _extract_embedding(self, wav, label):
method _add_noise (line 523) | def _add_noise(self, embedding, label):
method preprocess_ds (line 528) | def preprocess_ds(self, ds, is_training=False, cache_fn=None):
method _yamnet_labels (line 541) | def _yamnet_labels(self):
method _export_metadata (line 552) | def _export_metadata(self, tflite_filepath, index_to_label,
method create_serving_model (line 583) | def create_serving_model(self, training_model):
method export_tflite (line 604) | def export_tflite(self,
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/audio_spec_test.py
function _gen_dataset (line 31) | def _gen_dataset(spec, total_samples, num_classes, batch_size, seed):
class BaseSpecTest (line 63) | class BaseSpecTest(tf.test.TestCase):
method testEnsureVersion (line 65) | def testEnsureVersion(self):
class BaseTest (line 86) | class BaseTest(tf.test.TestCase):
method _train_and_export (line 88) | def _train_and_export(self,
class YAMNetSpecTest (line 117) | class YAMNetSpecTest(BaseTest):
method _test_preprocess (line 119) | def _test_preprocess(self, input_shape, input_count, output_shape,
method test_preprocess (line 144) | def test_preprocess(self):
method test_create_model (line 160) | def test_create_model(self):
method test_yamnet_two_heads (line 169) | def test_yamnet_two_heads(self):
method test_yamnet_single_head (line 263) | def test_yamnet_single_head(self):
method test_no_metadata (line 330) | def test_no_metadata(self):
method test_binary_classification (line 343) | def test_binary_classification(self):
method test_dynamic_range_quantization (line 350) | def test_dynamic_range_quantization(self):
class BrowserFFTSpecTest (line 362) | class BrowserFFTSpecTest(BaseTest):
method setUpClass (line 365) | def setUpClass(cls):
method test_model_initialization (line 369) | def test_model_initialization(self):
method test_create_model (line 381) | def test_create_model(self):
method test_dynamic_range_quantization (line 400) | def test_dynamic_range_quantization(self):
method test_binary_classification (line 409) | def test_binary_classification(self):
method test_basic_training (line 416) | def test_basic_training(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/image_spec.py
class ImageModelSpec (line 29) | class ImageModelSpec(object):
method __init__ (line 35) | def __init__(self,
method get_default_quantization_config (line 56) | def get_default_quantization_config(self, representative_data):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/model_spec_test.py
class ModelSpecTest (line 36) | class ModelSpecTest(tf.test.TestCase, parameterized.TestCase):
method test_get (line 38) | def test_get(self):
method test_get_not_none (line 49) | def test_get_not_none(self, model):
method test_get_not_none_audio_models (line 57) | def test_get_not_none_audio_models(self, model):
method test_get_not_none_recommendation_models (line 62) | def test_get_not_none_recommendation_models(self, model):
method test_get_raises (line 69) | def test_get_raises(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/object_detector_spec.py
function _get_ordered_label_map (line 45) | def _get_ordered_label_map(
class ExportModel (line 56) | class ExportModel(efficientdet_keras.EfficientDetModel):
method __init__ (line 59) | def __init__(self,
method __call__ (line 83) | def __call__(self, inputs: tf.Tensor):
class EfficientDetModelSpec (line 110) | class EfficientDetModelSpec(object):
method __init__ (line 115) | def __init__(self,
method create_model (line 235) | def create_model(self) -> tf.keras.Model:
method train (line 240) | def train(self,
method _get_evaluator_and_label_map (line 274) | def _get_evaluator_and_label_map(
method _get_metric_dict (line 289) | def _get_metric_dict(self, evaluator: coco_metric.EvaluationMetric,
method evaluate (line 303) | def evaluate(self,
method evaluate_tflite (line 348) | def evaluate_tflite(self,
method export_saved_model (line 403) | def export_saved_model(self,
method get_default_quantization_config (line 448) | def get_default_quantization_config(
method export_tflite (line 466) | def export_tflite(
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/object_detector_spec_test.py
class EfficientDetModelSpecTest (line 25) | class EfficientDetModelSpecTest(tf.test.TestCase):
method setUpClass (line 28) | def setUpClass(cls):
method test_export_saved_model (line 36) | def test_export_saved_model(self):
method test_export_tflite (line 42) | def test_export_tflite(self):
method test_create_model (line 48) | def test_create_model(self):
method test_train (line 55) | def test_train(self):
method test_evaluate (line 68) | def test_evaluate(self):
method _gen_input (line 74) | def _gen_input(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/recommendation_spec.py
class RecommendationSpec (line 24) | class RecommendationSpec(object):
method __init__ (line 29) | def __init__(self, input_spec: recommendation_config.InputSpec,
method create_model (line 40) | def create_model(self):
method get_default_quantization_config (line 48) | def get_default_quantization_config(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/recommendation_spec_test.py
class RecommendationSpecTest (line 24) | class RecommendationSpecTest(tf.test.TestCase, parameterized.TestCase):
method test_create_recommendation_model (line 31) | def test_create_recommendation_model(self, encoder_type):
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/text_spec.py
class AverageWordVecModelSpec (line 56) | class AverageWordVecModelSpec(object):
method __init__ (line 66) | def __init__(self,
method get_name_to_features (line 106) | def get_name_to_features(self):
method select_data_from_record (line 114) | def select_data_from_record(self, record):
method convert_examples_to_features (line 120) | def convert_examples_to_features(self, examples, tfrecord_file, label_...
method create_model (line 137) | def create_model(self,
method run_classifier (line 161) | def run_classifier(self, train_ds, validation_ds, epochs, steps_per_ep...
method gen_vocab (line 181) | def gen_vocab(self, examples):
method preprocess (line 197) | def preprocess(self, raw_text):
method _tokenize (line 218) | def _tokenize(self, text):
method save_vocab (line 226) | def save_vocab(self, vocab_filename):
method load_vocab (line 234) | def load_vocab(self, vocab_filename):
method get_config (line 244) | def get_config(self):
method get_default_quantization_config (line 253) | def get_default_quantization_config(self):
function create_classifier_model (line 258) | def create_classifier_model(bert_config,
class BertModelSpec (line 326) | class BertModelSpec(object):
method __init__ (line 333) | def __init__(
method get_default_quantization_config (line 420) | def get_default_quantization_config(self):
method reorder_input_details (line 426) | def reorder_input_details(self, tflite_input_details):
method build (line 438) | def build(self):
method save_vocab (line 447) | def save_vocab(self, vocab_filename):
class BertClassifierModelSpec (line 456) | class BertClassifierModelSpec(BertModelSpec):
method __init__ (line 459) | def __init__(
method get_name_to_features (line 523) | def get_name_to_features(self):
method select_data_from_record (line 534) | def select_data_from_record(self, record):
method convert_examples_to_features (line 544) | def convert_examples_to_features(self, examples, tfrecord_file, label_...
method create_model (line 551) | def create_model(self,
method run_classifier (line 579) | def run_classifier(self, train_ds, validation_ds, epochs, steps_per_ep...
method get_config (line 623) | def get_config(self):
function dump_to_files (line 629) | def dump_to_files(all_predictions, all_nbest_json, scores_diff_json,
function create_qa_model (line 645) | def create_qa_model(bert_config,
function create_qa_model_from_squad (line 705) | def create_qa_model_from_squad(max_seq_length,
class BertQAModelSpec (line 755) | class BertQAModelSpec(BertModelSpec):
method __init__ (line 758) | def __init__(
method get_name_to_features (line 831) | def get_name_to_features(self, is_training):
method select_data_from_record (line 847) | def select_data_from_record(self, record):
method get_config (line 861) | def get_config(self):
method convert_examples_to_features (line 871) | def convert_examples_to_features(self, examples, is_training, output_fn,
method create_model (line 887) | def create_model(self):
method train (line 901) | def train(self, train_ds, epochs, steps_per_epoch, **kwargs):
method _predict (line 948) | def _predict(self, model, dataset, num_steps):
method predict (line 982) | def predict(self, model, dataset, num_steps):
method reorder_output_details (line 986) | def reorder_output_details(self, tflite_output_details):
method predict_tflite (line 996) | def predict_tflite(self, tflite_filepath, dataset):
method evaluate (line 1016) | def evaluate(self, model, tflite_filepath, dataset, num_steps, eval_ex...
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/text_spec_test.py
function _gen_examples (line 29) | def _gen_examples():
function _get_dataset_from_tfrecord (line 39) | def _get_dataset_from_tfrecord(tfrecord_file, name_to_features):
class AverageWordVecModelSpecTest (line 50) | class AverageWordVecModelSpecTest(tf.test.TestCase):
method setUp (line 52) | def setUp(self):
method test_tokenize (line 60) | def test_tokenize(self):
method test_convert_examples_to_features (line 69) | def test_convert_examples_to_features(self):
method test_preprocess (line 83) | def test_preprocess(self):
method test_gen_vocab (line 88) | def test_gen_vocab(self):
method test_save_load_vocab (line 97) | def test_save_load_vocab(self):
method test_run_classifier (line 103) | def test_run_classifier(self):
method test_create_model_without_compilation (line 113) | def test_create_model_without_compilation(self):
method _gen_random_ds (line 124) | def _gen_random_ds(self, num_classes, data_size=1, batch_size=4):
class BertClassifierModelSpecTest (line 139) | class BertClassifierModelSpecTest(tf.test.TestCase, parameterized.TestCa...
method test_bert (line 145) | def test_bert(self, uri, is_tf2):
method _test_convert_examples_to_features (line 152) | def _test_convert_examples_to_features(self, model_spec):
method _test_run_classifier (line 177) | def _test_run_classifier(self, model_spec):
method _test_create_model_without_compilation (line 187) | def _test_create_model_without_compilation(self, model_spec):
method _gen_random_ds (line 198) | def _gen_random_ds(self, seq_len, num_classes, data_size=1, batch_size...
FILE: tensorflow_examples/lite/model_maker/core/task/model_spec/util.py
function dict_with_default (line 22) | def dict_with_default(default_dict, **updates):
function create_int_feature (line 27) | def create_int_feature(values):
function get_num_gpus (line 32) | def get_num_gpus(num_gpus):
function wrap_doc (line 42) | def wrap_doc(func_or_class, short_desciption):
FILE: tensorflow_examples/lite/model_maker/core/task/model_util.py
function set_batch_size (line 38) | def set_batch_size(model, batch_size):
function get_steps_per_epoch (line 45) | def get_steps_per_epoch(steps_per_epoch=None, batch_size=None, train_dat...
function _create_temp_dir (line 72) | def _create_temp_dir(convert_from_saved_model):
class DummyContextManager (line 80) | class DummyContextManager(object):
method __enter__ (line 82) | def __enter__(self):
method __exit__ (line 85) | def __exit__(self, *args):
function export_labels (line 89) | def export_labels(filepath, index_to_label):
function export_saved_model (line 94) | def export_saved_model(model,
function export_tflite (line 130) | def export_tflite(model,
function get_lite_runner (line 180) | def get_lite_runner(tflite_filepath, model_spec=None):
function _get_input_tensor (line 196) | def _get_input_tensor(input_tensors, input_details, i):
class LiteRunner (line 210) | class LiteRunner(object):
method __init__ (line 213) | def __init__(self,
method run (line 240) | def run(self, input_tensors):
function export_tfjs (line 293) | def export_tfjs(keras_or_saved_model,
function load_tfjs_keras_model (line 330) | def load_tfjs_keras_model(model_path):
function extract_tflite_metadata_json (line 336) | def extract_tflite_metadata_json(tflite_filepath):
FILE: tensorflow_examples/lite/model_maker/core/task/model_util_test.py
function _get_quantization_config_list (line 28) | def _get_quantization_config_list(input_dim, num_classes, max_input_value):
function _mock_gen_dataset (line 46) | def _mock_gen_dataset(data, batch_size=1, is_training=False): # pylint:...
class ModelUtilTest (line 52) | class ModelUtilTest(tf.test.TestCase):
method test_export_tflite (line 55) | def test_export_tflite(self):
method test_export_tflite_quantized (line 63) | def test_export_tflite_quantized(self):
method _test_tflite (line 79) | def _test_tflite(self,
method test_export_tfjs (line 94) | def test_export_tfjs(self):
method test_export_tfjs_saved_model (line 106) | def test_export_tfjs_saved_model(self):
FILE: tensorflow_examples/lite/model_maker/core/task/model_util_v1_test.py
class ModelUtilTest (line 24) | class ModelUtilTest(model_util_test.ModelUtilTest):
FILE: tensorflow_examples/lite/model_maker/core/task/object_detector.py
class ObjectDetector (line 38) | class ObjectDetector(custom_model.CustomModel):
method __init__ (line 44) | def __init__(
method create_model (line 73) | def create_model(self) -> tf.keras.Model:
method _get_dataset_and_steps (line 77) | def _get_dataset_and_steps(
method train (line 92) | def train(self,
method evaluate (line 127) | def evaluate(self,
method evaluate_tflite (line 150) | def evaluate_tflite(
method _export_saved_model (line 158) | def _export_saved_model(self, saved_model_dir: str) -> None:
method _export_tflite (line 162) | def _export_tflite(
method _export_labels (line 206) | def _export_labels(self, label_filepath: str) -> None:
method create (line 220) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/object_detector_test.py
class ObjectDetectorTest (line 32) | class ObjectDetectorTest(tf.test.TestCase):
method testEfficientDetLite0 (line 34) | def testEfficientDetLite0(self):
FILE: tensorflow_examples/lite/model_maker/core/task/question_answer.py
function _get_model_info (line 34) | def _get_model_info(model_spec, vocab_file):
class QuestionAnswer (line 52) | class QuestionAnswer(custom_model.CustomModel):
method train (line 59) | def train(self,
method create_model (line 84) | def create_model(self):
method evaluate (line 87) | def evaluate(self,
method evaluate_tflite (line 120) | def evaluate_tflite(self,
method _export_tflite (line 153) | def _export_tflite(self,
method create (line 194) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/question_answer_test.py
function _get_data (line 35) | def _get_data(model_spec, version):
class QuestionAnswerTest (line 53) | class QuestionAnswerTest(tf.test.TestCase, parameterized.TestCase):
method test_bert_model_v1_incompatible (line 56) | def test_bert_model_v1_incompatible(self):
method test_bert_model (line 61) | def test_bert_model(self):
method _test_model_without_training (line 76) | def _test_model_without_training(self, model_spec, train_data,
method test_mobilebert_model (line 89) | def test_mobilebert_model(self, spec, trainable):
method _test_f1_score (line 101) | def _test_f1_score(self, model, validation_data, threshold):
method _test_export_vocab (line 105) | def _test_export_vocab(self, model):
method _test_export_to_tflite (line 112) | def _test_export_to_tflite(self,
method _test_export_to_saved_model (line 158) | def _test_export_to_saved_model(self, model):
FILE: tensorflow_examples/lite/model_maker/core/task/question_answer_v1_test.py
class QuestionAnswerV1Test (line 24) | class QuestionAnswerV1Test(question_answer_test.QuestionAnswerTest):
FILE: tensorflow_examples/lite/model_maker/core/task/recommendation.py
class Recommendation (line 35) | class Recommendation(custom_model.CustomModel):
method __init__ (line 45) | def __init__(self,
method input_spec (line 69) | def input_spec(self) -> recommendation_config.InputSpec:
method model_hparams (line 73) | def model_hparams(self) -> recommendation_config.ModelHParams:
method create_model (line 76) | def create_model(self, do_train=True):
method train (line 90) | def train(self,
method evaluate (line 127) | def evaluate(self, data, batch_size=10):
method _keras_callbacks (line 143) | def _keras_callbacks(self, model_dir):
method _get_serve_fn (line 147) | def _get_serve_fn(self, keras_model):
method _export_tflite (line 152) | def _export_tflite(self, tflite_filepath):
method _export_saved_model (line 168) | def _export_saved_model(self, filepath):
method evaluate_tflite (line 173) | def evaluate_tflite(self, tflite_filepath, data):
method create (line 214) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/recommendation_test.py
class RecommendationTest (line 27) | class RecommendationTest(parameterized.TestCase, tf.test.TestCase):
method setUp (line 29) | def setUp(self):
method test_create (line 44) | def test_create(self, encoder_type):
method test_evaluate (line 59) | def test_evaluate(self):
method test_export_and_evaluation (line 74) | def test_export_and_evaluation(self):
method _test_evaluate_tflite (line 104) | def _test_evaluate_tflite(self, model, tflite_filepath):
FILE: tensorflow_examples/lite/model_maker/core/task/searcher.py
class ExportFormat (line 40) | class ExportFormat(enum.Enum):
class Tree (line 47) | class Tree:
class ScoreAH (line 87) | class ScoreAH:
class ScoreBruteForce (line 123) | class ScoreBruteForce:
class ScaNNOptions (line 133) | class ScaNNOptions:
class Searcher (line 160) | class Searcher(object):
method __init__ (line 163) | def __init__(self,
method create_from_server_scann (line 181) | def create_from_server_scann(
method create_from_data (line 201) | def create_from_data(cls,
method export (line 247) | def export(self,
FILE: tensorflow_examples/lite/model_maker/core/task/searcher_test.py
class SearcherTest (line 32) | class SearcherTest(tf.test.TestCase, parameterized.TestCase):
method test_searcher_with_image_embedder (line 34) | def test_searcher_with_image_embedder(self):
method test_searcher_with_text_embedder (line 102) | def test_searcher_with_text_embedder(self):
method test_searcher_with_3_inputs_models (line 169) | def test_searcher_with_3_inputs_models(self, tflite_filename, url, dim):
FILE: tensorflow_examples/lite/model_maker/core/task/text_classifier.py
function _get_bert_model_info (line 36) | def _get_bert_model_info(model_spec, vocab_file, label_file):
function _get_model_info (line 50) | def _get_model_info(model_name):
class TextClassifier (line 58) | class TextClassifier(classification_model.ClassificationModel):
method __init__ (line 67) | def __init__(self,
method create_model (line 84) | def create_model(self, with_loss_and_metrics=True):
method train (line 88) | def train(self,
method _export_tflite (line 122) | def _export_tflite(self,
method create (line 178) | def create(cls,
FILE: tensorflow_examples/lite/model_maker/core/task/text_classifier_test.py
class TextClassifierTest (line 33) | class TextClassifierTest(tf.test.TestCase):
method _gen_text_dir (line 36) | def _gen_text_dir(self, text_per_class=1):
method setUp (line 50) | def setUp(self):
method test_average_wordvec_model_create_v1_incompatible (line 56) | def test_average_wordvec_model_create_v1_incompatible(self):
method test_bert_model (line 67) | def test_bert_model(self):
method test_mobilebert_model (line 85) | def test_mobilebert_model(self):
method test_mobilebert_model_without_training_for_tfjs (line 103) | def test_mobilebert_model_without_training_for_tfjs(self):
method test_average_wordvec_model (line 113) | def test_average_wordvec_model(self):
method _test_model_without_training (line 137) | def _test_model_without_training(self, model_spec):
method _test_accuracy (line 145) | def _test_accuracy(self, model, threshold=1.0):
method _test_predict_top_k (line 149) | def _test_predict_top_k(self, model):
method _load_vocab (line 156) | def _load_vocab(self, filepath):
method _load_labels (line 160) | def _load_labels(self, filepath):
method _test_export_labels (line 164) | def _test_export_labels(self, model):
method _test_export_vocab (line 171) | def _test_export_vocab(self, model):
method _test_export_to_tflite (line 187) | def _test_export_to_tflite(self,
method _test_export_to_saved_model (line 234) | def _test_export_to_saved_model(self, model):
method _test_export_to_tfjs (line 241) | def _test_export_to_tfjs(self, model):
method _test_export_to_tflite_quant (line 250) | def _test_export_to_tflite_quant(self, model, model_size, err_ratio=0....
FILE: tensorflow_examples/lite/model_maker/core/task/text_classifier_v1_test.py
class TextClassifierV1Test (line 24) | class TextClassifierV1Test(text_classifier_test.TextClassifierTest):
FILE: tensorflow_examples/lite/model_maker/core/task/train_image_classifier_lib.py
function add_params (line 34) | def add_params(hparams, **kwargs):
class HParams (line 40) | class HParams(
method get_hparams (line 60) | def get_hparams(cls, **kwargs):
function get_default_hparams (line 66) | def get_default_hparams():
function create_optimizer (line 83) | def create_optimizer(init_lr, num_decay_steps, num_warmup_steps):
function get_default_callbacks (line 102) | def get_default_callbacks(model_dir):
function hub_train_model (line 114) | def hub_train_model(model, hparams, train_ds, validation_ds, steps_per_e...
function train_model (line 155) | def train_model(model, hparams, train_ds, validation_ds, steps_per_epoch):
FILE: tensorflow_examples/lite/model_maker/core/test_util.py
function test_srcdir (line 36) | def test_srcdir():
function get_test_data_path (line 46) | def get_test_data_path(file_or_dirname):
function get_cache_dir (line 55) | def get_cache_dir(temp_dir, filename):
function test_in_tf_1 (line 70) | def test_in_tf_1(fn):
function test_in_tf_2 (line 84) | def test_in_tf_2(fn):
function test_in_tf_1and2 (line 98) | def test_in_tf_1and2(fn):
function build_model (line 112) | def build_model(input_shape, num_classes):
function get_dataloader (line 127) | def get_dataloader(data_size, input_shape, num_classes, max_input_value=...
function create_pascal_voc (line 143) | def create_pascal_voc(temp_dir=None):
function is_same_output (line 168) | def is_same_output(tflite_file,
FILE: tensorflow_examples/lite/model_maker/core/utils/ondevice_scann_builder.py
function builder (line 22) | def builder(db, num_neighbors, distance_measure):
class OndeviceScannBuilder (line 33) | class OndeviceScannBuilder(scann_builder.ScannBuilder):
method create_config (line 36) | def create_config(self):
FILE: tensorflow_examples/lite/model_maker/core/utils/ondevice_scann_builder_test.py
class OndeviceScannBuilderTest (line 23) | class OndeviceScannBuilderTest(tf.test.TestCase):
method test_create_from_config_bruteforce (line 25) | def test_create_from_config_bruteforce(self):
method test_create_from_config_ah (line 44) | def test_create_from_config_ah(self):
FILE: tensorflow_examples/lite/model_maker/core/utils/scann_converter.py
class OnDeviceArtifacts (line 45) | class OnDeviceArtifacts(NamedTuple):
function get_distance_measure (line 52) | def get_distance_measure(
function get_indexer (line 59) | def get_indexer(
function get_partitioner (line 97) | def get_partitioner(
function convert_serialized_to_on_device (line 123) | def convert_serialized_to_on_device(serialized_path: str) -> OnDeviceArt...
function convert_artifacts_to_leveldb (line 191) | def convert_artifacts_to_leveldb(output_file_path: str,
FILE: tensorflow_examples/lite/model_maker/core/utils/scann_converter_test.py
class ScannConverterTest (line 38) | class ScannConverterTest(tf.test.TestCase, parameterized.TestCase):
method setUp (line 40) | def setUp(self):
method tearDown (line 45) | def tearDown(self):
method test_converts_files_properly (line 99) | def test_converts_files_properly(self, distance: str, tree: bool, ah: ...
method _verify_ah_centers (line 159) | def _verify_ah_centers(
method _verify_partition_centroids (line 179) | def _verify_partition_centroids(
method test_generates_index_leveldb_file (line 199) | def test_generates_index_leveldb_file(self, hashed: bool, compressed: ...
FILE: tensorflow_examples/lite/model_maker/demo/audio_classification_demo.py
function _define_flags (line 55) | def _define_flags():
function _download_dataset (line 69) | def _download_dataset(filename, url, extracted_folder_name, **kwargs):
function download_bird_dataset (line 82) | def download_bird_dataset(**kwargs):
function download_speech_commands_dataset (line 90) | def download_speech_commands_dataset(**kwargs):
function download_esc50_dataset (line 98) | def download_esc50_dataset(**kwargs):
function run (line 105) | def run(spec,
function main (line 173) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/audio_classification_demo_test.py
function patch_data_loader (line 34) | def patch_data_loader():
class AudioClassificationDemoTest (line 55) | class AudioClassificationDemoTest(tf.test.TestCase, parameterized.TestCa...
method test_audio_classification_demo (line 61) | def test_audio_classification_demo(self, spec, dataset):
FILE: tensorflow_examples/lite/model_maker/demo/custom_model_demo.py
function define_flags (line 46) | def define_flags():
class DataLoader (line 53) | class DataLoader(dataloader.DataLoader):
method create (line 57) | def create(cls, spec, is_training=True, shuffle=False):
class BinaryClassificationBaseSpec (line 72) | class BinaryClassificationBaseSpec(abc.ABC):
method __init__ (line 77) | def __init__(self, model_dir=None, strategy=None):
method create_model (line 85) | def create_model(self):
method run_classifier (line 89) | def run_classifier(self, model, epochs, train_ds, train_steps, validat...
method preprocess_ds (line 93) | def preprocess_ds(self, ds, is_training=False):
class Spec (line 98) | class Spec(BinaryClassificationBaseSpec):
method preprocess_ds (line 101) | def preprocess_ds(self, ds, is_training=False):
method create_model (line 112) | def create_model(self):
method run_classifier (line 119) | def run_classifier(self, model, epochs, train_ds, train_steps, validat...
class BinaryClassifier (line 138) | class BinaryClassifier(custom_model.CustomModel):
method __init__ (line 141) | def __init__(self, spec, shuffle=True):
method train (line 145) | def train(self, train_data, validation_data, epochs=10, batch_size=4):
method evaluate (line 167) | def evaluate(self, data, batch_size=4):
method evaluate_tflite (line 171) | def evaluate_tflite(self, tflite_filepath, data):
function train_xor_model (line 196) | def train_xor_model(export_dir):
function main (line 229) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/custom_model_demo_test.py
class DemoTest (line 27) | class DemoTest(tf.test.TestCase):
method test_demo (line 29) | def test_demo(self):
FILE: tensorflow_examples/lite/model_maker/demo/image_classification_demo.py
function define_flags (line 35) | def define_flags():
function download_demo_data (line 43) | def download_demo_data(**kwargs):
function run (line 53) | def run(data_dir, export_dir, spec='efficientnet_lite0', **kwargs):
function main (line 74) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/image_classification_demo_test.py
function patch_data_loader (line 32) | def patch_data_loader():
class ImageClassificationDemoTest (line 48) | class ImageClassificationDemoTest(tf.test.TestCase):
method test_image_classification_demo (line 50) | def test_image_classification_demo(self):
FILE: tensorflow_examples/lite/model_maker/demo/question_answer_demo.py
function define_flags (line 33) | def define_flags():
function download_demo_data (line 40) | def download_demo_data(**kwargs):
function run (line 53) | def run(train_data_path,
function main (line 79) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/recommendation_demo.py
function define_flags (line 32) | def define_flags():
function download_data (line 41) | def download_data(download_dir):
function get_input_spec (line 46) | def get_input_spec(encoder_type: str,
function get_model_hparams (line 92) | def get_model_hparams() -> recommendation.spec.ModelHParams:
function run (line 110) | def run(data_dir, export_dir, batch_size=16, epochs=5, encoder_type='bow'):
function main (line 147) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/recommendation_demo_test.py
function setup_testdata (line 33) | def setup_testdata(instance):
function patch_data_loader (line 54) | def patch_data_loader():
class RecommendationDemoTest (line 68) | class RecommendationDemoTest(tf.test.TestCase):
method setUp (line 70) | def setUp(self):
method test_recommendation_demo (line 74) | def test_recommendation_demo(self):
FILE: tensorflow_examples/lite/model_maker/demo/text_classification_demo.py
function define_flags (line 35) | def define_flags():
function download_demo_data (line 43) | def download_demo_data(**kwargs):
function run (line 53) | def run(data_dir, export_dir, spec='mobilebert_classifier', **kwargs):
function main (line 90) | def main(_):
FILE: tensorflow_examples/lite/model_maker/demo/text_classification_demo_test.py
function patch_data_loader (line 32) | def patch_data_loader():
class TextClassificationDemoTest (line 48) | class TextClassificationDemoTest(tf.test.TestCase):
method test_text_classification_demo (line 50) | def test_text_classification_demo(self):
FILE: tensorflow_examples/lite/model_maker/pip_package/golden_api_test.py
class GoldenApiTest (line 34) | class GoldenApiTest(tf.test.TestCase, parameterized.TestCase):
method test_golden_apis (line 37) | def test_golden_apis(self, package: str, import_lines: List[str]):
method test_absolute_import (line 65) | def test_absolute_import(self, name: str):
FILE: tensorflow_examples/lite/model_maker/pip_package/setup.py
function _read_required_packages (line 102) | def _read_required_packages(fpath):
function get_required_packages (line 110) | def get_required_packages():
FILE: tensorflow_examples/lite/model_maker/pip_package/setup_util.py
class PackageGen (line 23) | class PackageGen:
method __init__ (line 26) | def __init__(
method run (line 67) | def run(self):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/aug/autoaugment.py
function policy_v0 (line 37) | def policy_v0():
function policy_v1 (line 52) | def policy_v1():
function policy_vtest (line 82) | def policy_vtest():
function policy_v2 (line 93) | def policy_v2():
function policy_v3 (line 125) | def policy_v3():
function blend (line 150) | def blend(image1, image2, factor):
function cutout (line 193) | def cutout(image, pad_size, replace=0):
function solarize (line 244) | def solarize(image, threshold=128):
function solarize_add (line 251) | def solarize_add(image, addition=0, threshold=128):
function color (line 261) | def color(image, factor):
function contrast (line 267) | def contrast(image, factor):
function brightness (line 283) | def brightness(image, factor):
function posterize (line 289) | def posterize(image, bits):
function rotate (line 295) | def rotate(image, degrees, replace):
function random_shift_bbox (line 320) | def random_shift_bbox(image, bbox, pixel_scaling, replace,
function _clip_bbox (line 435) | def _clip_bbox(min_y, min_x, max_y, max_x):
function _check_bbox_area (line 454) | def _check_bbox_area(min_y, min_x, max_y, max_x, delta=0.05):
function _scale_bbox_only_op_probability (line 486) | def _scale_bbox_only_op_probability(prob):
function _apply_bbox_augmentation (line 503) | def _apply_bbox_augmentation(image, bbox, augmentation_func, *args):
function _concat_bbox (line 558) | def _concat_bbox(bbox, bboxes):
function _apply_bbox_augmentation_wrapper (line 572) | def _apply_bbox_augmentation_wrapper(image, bbox, new_bboxes, prob,
function _apply_multi_bbox_augmentation (line 617) | def _apply_multi_bbox_augmentation(image, bboxes, prob, aug_func,
function _apply_multi_bbox_augmentation_wrapper (line 699) | def _apply_multi_bbox_augmentation_wrapper(image, bboxes, prob, aug_func,
function rotate_only_bboxes (line 713) | def rotate_only_bboxes(image, bboxes, prob, degrees, replace):
function shear_x_only_bboxes (line 721) | def shear_x_only_bboxes(image, bboxes, prob, level, replace):
function shear_y_only_bboxes (line 729) | def shear_y_only_bboxes(image, bboxes, prob, level, replace):
function translate_x_only_bboxes (line 737) | def translate_x_only_bboxes(image, bboxes, prob, pixels, replace):
function translate_y_only_bboxes (line 745) | def translate_y_only_bboxes(image, bboxes, prob, pixels, replace):
function flip_only_bboxes (line 753) | def flip_only_bboxes(image, bboxes, prob):
function solarize_only_bboxes (line 761) | def solarize_only_bboxes(image, bboxes, prob, threshold):
function equalize_only_bboxes (line 769) | def equalize_only_bboxes(image, bboxes, prob):
function cutout_only_bboxes (line 777) | def cutout_only_bboxes(image, bboxes, prob, pad_size, replace):
function _rotate_bbox (line 785) | def _rotate_bbox(bbox, image_height, image_width, degrees):
function rotate_with_bboxes (line 838) | def rotate_with_bboxes(image, bboxes, degrees, replace):
function translate_x (line 869) | def translate_x(image, pixels, replace):
function translate_y (line 875) | def translate_y(image, pixels, replace):
function _shift_bbox (line 881) | def _shift_bbox(bbox, image_height, image_width, pixels, shift_horizontal):
function translate_bbox (line 922) | def translate_bbox(image, bboxes, pixels, replace, shift_horizontal):
function shear_x (line 956) | def shear_x(image, level, replace):
function shear_y (line 967) | def shear_y(image, level, replace):
function _shear_bbox (line 978) | def _shear_bbox(bbox, image_height, image_width, level, shear_horizontal):
function shear_with_bboxes (line 1028) | def shear_with_bboxes(image, bboxes, level, replace, shear_horizontal):
function autocontrast (line 1063) | def autocontrast(image):
function sharpness (line 1102) | def sharpness(image, factor):
function equalize (line 1132) | def equalize(image):
function wrap (line 1172) | def wrap(image):
function unwrap (line 1180) | def unwrap(image, replace):
function _cutout_inside_bbox (line 1218) | def _cutout_inside_bbox(image, bbox, pad_fraction):
function bbox_cutout (line 1294) | def bbox_cutout(image, bboxes, pad_fraction, replace_with_mean):
function _randomly_negate_tensor (line 1385) | def _randomly_negate_tensor(tensor):
function _rotate_level_to_arg (line 1392) | def _rotate_level_to_arg(level):
function _shrink_level_to_arg (line 1398) | def _shrink_level_to_arg(level):
function _enhance_level_to_arg (line 1407) | def _enhance_level_to_arg(level):
function _shear_level_to_arg (line 1411) | def _shear_level_to_arg(level):
function _translate_level_to_arg (line 1418) | def _translate_level_to_arg(level, translate_const):
function _bbox_cutout_level_to_arg (line 1425) | def _bbox_cutout_level_to_arg(level, hparams):
function level_to_arg (line 1431) | def level_to_arg(hparams):
function bbox_wrapper (line 1473) | def bbox_wrapper(func):
function _parse_policy_info (line 1480) | def _parse_policy_info(name, prob, level, replace_value, augmentation_hp...
function _apply_func_with_prob (line 1505) | def _apply_func_with_prob(func, image, args, prob, bboxes):
function select_and_apply_random_policy (line 1525) | def select_and_apply_random_policy(policies, image, bboxes):
function build_and_apply_nas_policy (line 1538) | def build_and_apply_nas_policy(policies, image, bboxes,
function distort_image_with_autoaugment (line 1592) | def distort_image_with_autoaugment(image,
function distort_image_with_randaugment (line 1632) | def distort_image_with_randaugment(image, bboxes, num_layers, magnitude):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/aug/gridmask.py
class GridMask (line 22) | class GridMask(object):
method __init__ (line 25) | def __init__(self,
method random_rotate (line 50) | def random_rotate(self, mask):
method crop (line 58) | def crop(mask, h, w):
method mask (line 66) | def mask(self, h, w):
method __call__ (line 106) | def __call__(self, image, label):
function gridmask (line 121) | def gridmask(image,
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/aug/mosaic.py
class Mosaic (line 23) | class Mosaic:
method __init__ (line 31) | def __init__(self,
method n_images (line 53) | def n_images(self) -> int:
method out_size (line 57) | def out_size(self) -> int:
method _mosaic_divide_points (line 60) | def _mosaic_divide_points(self) -> Tuple(int, int):
method _scale_box (line 87) | def _scale_box(box, image, mosaic_image):
method _scale_images (line 105) | def _scale_images(self, images, mosaic_divide_points):
method _mosaic (line 131) | def _mosaic(self, images, boxes, mosaic_divide_points):
method __call__ (line 235) | def __call__(self, images, boxes):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/autoaugment.py
function policy_v0 (line 36) | def policy_v0():
function policy_vtest (line 71) | def policy_vtest():
function blend (line 82) | def blend(image1, image2, factor):
function cutout (line 125) | def cutout(image, pad_size, replace=0):
function solarize (line 176) | def solarize(image, threshold=128):
function solarize_add (line 183) | def solarize_add(image, addition=0, threshold=128):
function color (line 193) | def color(image, factor):
function contrast (line 199) | def contrast(image, factor):
function brightness (line 216) | def brightness(image, factor):
function posterize (line 222) | def posterize(image, bits):
function rotate (line 228) | def rotate(image, degrees, replace):
function translate_x (line 253) | def translate_x(image, pixels, replace):
function translate_y (line 259) | def translate_y(image, pixels, replace):
function shear_x (line 265) | def shear_x(image, level, replace):
function shear_y (line 276) | def shear_y(image, level, replace):
function autocontrast (line 287) | def autocontrast(image):
function sharpness (line 326) | def sharpness(image, factor):
function equalize (line 358) | def equalize(image):
function invert (line 398) | def invert(image):
function wrap (line 404) | def wrap(image):
function unwrap (line 412) | def unwrap(image, replace):
function _randomly_negate_tensor (line 470) | def _randomly_negate_tensor(tensor):
function _rotate_level_to_arg (line 477) | def _rotate_level_to_arg(level):
function _shrink_level_to_arg (line 483) | def _shrink_level_to_arg(level):
function _enhance_level_to_arg (line 492) | def _enhance_level_to_arg(level):
function _shear_level_to_arg (line 496) | def _shear_level_to_arg(level):
function _translate_level_to_arg (line 503) | def _translate_level_to_arg(level, translate_const):
function level_to_arg (line 510) | def level_to_arg(hparams):
function _parse_policy_info (line 535) | def _parse_policy_info(name, prob, level, replace_value, augmentation_hp...
function _apply_func_with_prob (line 558) | def _apply_func_with_prob(func, image, args, prob):
function select_and_apply_random_policy (line 579) | def select_and_apply_random_policy(policies, image):
function build_and_apply_nas_policy (line 592) | def build_and_apply_nas_policy(policies, image,
function distort_image_with_autoaugment (line 641) | def distort_image_with_autoaugment(image, augmentation_name):
function distort_image_with_randaugment (line 672) | def distort_image_with_randaugment(image, num_layers, magnitude):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/backbone_factory.py
function get_model_builder (line 25) | def get_model_builder(model_name):
function get_model (line 35) | def get_model(model_name, override_params=None, model_dir=None):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/efficientnet_builder.py
function efficientnet_params (line 31) | def efficientnet_params(model_name):
class BlockDecoder (line 49) | class BlockDecoder(object):
method _decode_block_string (line 52) | def _decode_block_string(self, block_string):
method _encode_block_string (line 81) | def _encode_block_string(self, block):
method decode (line 102) | def decode(self, string_list):
method encode (line 117) | def encode(self, blocks_args):
function swish (line 131) | def swish(features, use_native=True, use_hard=False):
function efficientnet (line 171) | def efficientnet(width_coefficient=None,
function get_model_params (line 197) | def get_model_params(model_name, override_params):
function build_model (line 219) | def build_model(images,
function build_model_base (line 292) | def build_model_base(images, model_name, training, override_params=None):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/efficientnet_lite_builder.py
function efficientnet_lite_params (line 33) | def efficientnet_lite_params(model_name):
function efficientnet_lite (line 54) | def efficientnet_lite(width_coefficient=None,
function get_model_params (line 82) | def get_model_params(model_name, override_params):
function build_model (line 104) | def build_model(images,
function build_model_base (line 175) | def build_model_base(images, model_name, training, override_params=None):
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/efficientnet_model.py
function conv_kernel_initializer (line 53) | def conv_kernel_initializer(shape, dtype=None, partition_info=None):
function dense_kernel_initializer (line 77) | def dense_kernel_initializer(shape, dtype=None, partition_info=None):
function superpixel_kernel_initializer (line 98) | def superpixel_kernel_initializer(shape, dtype='float32', partition_info...
function round_filters (line 129) | def round_filters(filters, global_params, skip=False):
function round_repeats (line 146) | def round_repeats(repeats, global_params, skip=False):
class SE (line 154) | class SE(tf.keras.layers.Layer):
method __init__ (line 157) | def __init__(self, global_params, se_filters, output_filters, name=None):
method call (line 184) | def call(self, inputs):
class SuperPixel (line 199) | class SuperPixel(tf.keras.layers.Layer):
method __init__ (line 202) | def __init__(self, block_args, global_params, name=None):
method call (line 220) | def call(self, inputs, training):
class MBConvBlock (line 224) | class MBConvBlock(tf.keras.layers.Layer):
method __init__ (line 231) | def __init__(self, block_args, global_params, name=None):
method block_args (line 267) | def block_args(self):
method _build (line 270) | def _build(self):
method call (line 361) | def call(self, inputs, training, survival_prob=None):
class MBConvBlockWithoutDepthwise (line 420) | class MBConvBlockWithoutDepthwise(MBConvBlock):
method _build (line 423) | def _build(self):
method call (line 462) | def call(self, inputs, training, survival_prob=None):
class Stem (line 507) | class Stem(tf.keras.layers.Layer):
method __init__ (line 510) | def __init__(self, global_params, stem_filters, name=None):
method call (line 527) | def call(self, inputs, training):
class Head (line 531) | class Head(tf.keras.layers.Layer):
method __init__ (line 534) | def __init__(self, global_params, name=None):
method call (line 572) | def call(self, inputs, training, pooled_features_only):
class Model (line 605) | class Model(tf.keras.Model):
method __init__ (line 611) | def __init__(self, blocks_args=None, global_params=None, name=None):
method _get_conv_block (line 636) | def _get_conv_block(self, conv_type):
method _build (line 640) | def _build(self):
method call (line 711) | def call(self, # pytype: disable=signature-mismatch # overriding-par...
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/preprocessing.py
function distorted_bounding_box_crop (line 29) | def distorted_bounding_box_crop(image_bytes,
function _at_least_x_are_equal (line 81) | def _at_least_x_are_equal(a, b, x):
function _resize_image (line 88) | def _resize_image(image, image_size, method=None):
function _decode_and_random_crop (line 96) | def _decode_and_random_crop(image_bytes, image_size, resize_method=None):
function _decode_and_center_crop (line 118) | def _decode_and_center_crop(image_bytes, image_size, resize_method=None):
function _flip (line 138) | def _flip(image):
function preprocess_for_train (line 144) | def preprocess_for_train(image_bytes,
function preprocess_for_eval (line 204) | def preprocess_for_eval(image_bytes,
function preprocess_image (line 226) | def preprocess_image(image_bytes,
FILE: tensorflow_examples/lite/model_maker/third_party/efficientdet/backbone/train_backbone.py
function create_dataset (line 81) | def create_dataset(dataset: tf.data.Dataset, num_classes: int,
class TrainableModel (line 109) | class TrainableModel(efficientnet_model.Model):
method __init__ (line 115) | def __init__(self,
method _reg_l2_loss (line 125) | def _reg_l2_loss(self, weight_decay, regex=r'.*(kernel|weight)
Copy disabled (too large)
Download .json
Condensed preview — 1881 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,928K chars).
[
{
"path": ".gitignore",
"chars": 53,
"preview": "**/*.pyc\n**/.DS_Store\n**/.idea\n**/.ipynb_checkpoints\n"
},
{
"path": "AUTHORS",
"chars": 312,
"preview": "\n# This is the official list of TensorFlow authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS"
},
{
"path": "CODEOWNERS",
"chars": 346,
"preview": "# https://help.github.com/articles/about-codeowners/\n# Last matching pattern takes preecedence.\n\n# Default owners for ev"
},
{
"path": "CONTRIBUTING.md",
"chars": 2218,
"preview": "# Contributing\n\nYou don't need to be a developer to make a significant\nimpact on TensorFlow documentation and examples-"
},
{
"path": "LICENSE",
"chars": 11416,
"preview": "Copyright 2018 The TensorFlow Authors. All rights reserved.\n\n Apache License\n "
},
{
"path": "README.md",
"chars": 1465,
"preview": "# TensorFlow Examples\n\n<div align=\"center\">\n <img src=\"https://www.tensorflow.org/images/tf_logo_social.png\" /><br /><b"
},
{
"path": "__init__.py",
"chars": 178,
"preview": "\"\"\"tensorflow_examples is a package for examples of TensorFlow.\"\"\"\n\nfrom __future__ import absolute_import\nfrom __future"
},
{
"path": "courses/udacity_deep_learning/.gitignore",
"chars": 31,
"preview": "notMNIST_large*\nnotMNIST_small*"
},
{
"path": "courses/udacity_deep_learning/1_notmnist.ipynb",
"chars": 24863,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"5hIbr52I7Z7U\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/2_fullyconnected.ipynb",
"chars": 17497,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"kR-4eNdK6lYS\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/3_regularization.ipynb",
"chars": 7172,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"kR-4eNdK6lYS\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/4_convolutions.ipynb",
"chars": 13492,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"4embtkV0pNxM\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/5_word2vec.ipynb",
"chars": 310343,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"D7tqLMoKF6uq\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/6_lstm.ipynb",
"chars": 40830,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"D7tqLMoKF6uq\"\n },\n \"sou"
},
{
"path": "courses/udacity_deep_learning/Dockerfile",
"chars": 467,
"preview": "FROM gcr.io/tensorflow/tensorflow:1.0.0\nLABEL maintainer=\"Vincent Vanhoucke <vanhoucke@google.com>\"\n\n# Pillow needs libj"
},
{
"path": "courses/udacity_deep_learning/README.md",
"chars": 5269,
"preview": "Assignments for Udacity Deep Learning class with TensorFlow\n===========================================================\n"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l01c01_introduction_to_colab_and_python.ipynb",
"chars": 11765,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l02c01_celsius_to_fahrenheit.ipynb",
"chars": 18964,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"HnKx50tv5aZD\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l03c01_classifying_images_of_clothing.ipynb",
"chars": 32052,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l04c01_image_classification_with_cnns.ipynb",
"chars": 32542,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"6uQP3ZbC8J5o\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l05c01_dogs_vs_cats_without_augmentation.ipynb",
"chars": 22260,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"TBFXQGKYUc4X\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l05c02_dogs_vs_cats_with_augmentation.ipynb",
"chars": 27631,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"TBFXQGKYUc4X\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l05c03_exercise_flowers_with_data_augmentation.ipynb",
"chars": 24595,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"TBFXQGKYUc4X\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l05c04_exercise_flowers_with_data_augmentation_solution.ipynb",
"chars": 28497,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"TBFXQGKYUc4X\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l06c01_tensorflow_hub_and_transfer_learning.ipynb",
"chars": 24643,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"W_tvPdyfA-BL\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l06c02_exercise_flowers_with_transfer_learning.ipynb",
"chars": 17145,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"W_tvPdyfA-BL\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l06c03_exercise_flowers_with_transfer_learning_solution.ipynb",
"chars": 21540,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"W_tvPdyfA-BL\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l07c01_saving_and_loading_models.ipynb",
"chars": 25013,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"W_tvPdyfA-BL\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c01_common_patterns.ipynb",
"chars": 8398,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c02_naive_forecasting.ipynb",
"chars": 8110,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c03_moving_average.ipynb",
"chars": 13217,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c04_time_windows.ipynb",
"chars": 7250,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c05_forecasting_with_machine_learning.ipynb",
"chars": 15186,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c06_forecasting_with_rnn.ipynb",
"chars": 15978,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c07_forecasting_with_stateful_rnn.ipynb",
"chars": 11451,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c08_forecasting_with_lstm.ipynb",
"chars": 10724,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l08c09_forecasting_with_cnn.ipynb",
"chars": 16245,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c01_nlp_turn_words_into_tokens.ipynb",
"chars": 7606,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c02_nlp_padding.ipynb",
"chars": 11210,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c03_nlp_prepare_larger_text_corpus.ipynb",
"chars": 8359,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c04_nlp_embeddings_and_sentiment.ipynb",
"chars": 12906,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c05_nlp_tweaking_the_model.ipynb",
"chars": 13530,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l09c06_nlp_subwords.ipynb",
"chars": 13311,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l10c01_nlp_lstms_with_reviews_subwords_dataset.ipynb",
"chars": 22109,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l10c02_nlp_multiple_models_for_predicting_sentiment.ipynb",
"chars": 22682,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l10c03_nlp_constructing_text_generation_model.ipynb",
"chars": 12864,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_for_deep_learning/l10c04_nlp_optimizing_the_text_generation_model.ipynb",
"chars": 14416,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"punL79CN7Ox6\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c01_linear_regression.ipynb",
"chars": 7653,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c02_transfer_learning.ipynb",
"chars": 24420,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c03_exercise_convert_model_to_tflite.ipynb",
"chars": 20058,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c04_exercise_convert_model_to_tflite_solution.ipynb",
"chars": 17716,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c05_exercise_rock_paper_scissors.ipynb",
"chars": 20141,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "courses/udacity_intro_to_tensorflow_lite/tflite_c06_exercise_rock_paper_scissors_solution.ipynb",
"chars": 19521,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"Za8-Nr5k11fh\"\n },\n \"sou"
},
{
"path": "lite/.gitignore",
"chars": 1587,
"preview": "# TensorFlow Lite model\n*.tflite\n\n# Swift\n\n## Build generated\nbuild/\nDerivedData/\n\n## Various settings\n*.pbxuser\n!defaul"
},
{
"path": "lite/README.md",
"chars": 3441,
"preview": "# TensorFlow Lite sample applications\n\n<!-- Note: These samples are being staged internally before being migrated to\n "
},
{
"path": "lite/codelabs/digit_classifier/README.md",
"chars": 1551,
"preview": "# Codelabs for TensorFlow Lite\n\nThis repository contains the code for the a TensorFlow Lite codelab:\n\n* [Build a handwri"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/build.gradle",
"chars": 1787,
"preview": "apply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\n\nandroid {\n compileSdkVersion 30\n defaultCo"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/proguard-rules.pro",
"chars": 751,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/AndroidManifest.xml",
"chars": 876,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xm"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/assets/ADD_TFLITE_MODEL_HERE",
"chars": 117,
"preview": "Place the TensorFlow Lite model file (mnist.tflite) you generated from step 2: \"Train a machine learning model\" here."
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/java/org/tensorflow/lite/codelabs/digitclassifier/DigitClassifier.kt",
"chars": 5679,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/java/org/tensorflow/lite/codelabs/digitclassifier/MainActivity.kt",
"chars": 3426,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/drawable/ic_launcher_background.xml",
"chars": 5251,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
"chars": 1755,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/layout/activity_main.xml",
"chars": 1493,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n xmlns:android=\"http://sche"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 266,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <bac"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 266,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <bac"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/values/colors.xml",
"chars": 202,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#008577</color>\n <color name=\"colorPrim"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/values/strings.xml",
"chars": 370,
"preview": "<resources>\n <string name=\"app_name\" translatable=\"false\">Digit Classifier</string>\n <string name=\"clear_button_text\" "
},
{
"path": "lite/codelabs/digit_classifier/android/finish/app/src/main/res/values/styles.xml",
"chars": 361,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar\">\n "
},
{
"path": "lite/codelabs/digit_classifier/android/finish/build.gradle",
"chars": 830,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n e"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/gradle.properties",
"chars": 1163,
"preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/gradlew",
"chars": 8710,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/gradlew.bat",
"chars": 2937,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "lite/codelabs/digit_classifier/android/finish/settings.gradle",
"chars": 81,
"preview": "rootProject.name = 'TFLite Digit Classifier Codelab (finish) App'\ninclude ':app'\n"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/build.gradle",
"chars": 1679,
"preview": "apply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\n\nandroid {\n compileSdkVersion 30\n defaultCo"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/proguard-rules.pro",
"chars": 751,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/AndroidManifest.xml",
"chars": 876,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xm"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/assets/ADD_TFLITE_MODEL_HERE",
"chars": 117,
"preview": "Place the TensorFlow Lite model file (mnist.tflite) you generated from step 2: \"Train a machine learning model\" here."
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/java/org/tensorflow/lite/codelabs/digitclassifier/DigitClassifier.kt",
"chars": 4260,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/java/org/tensorflow/lite/codelabs/digitclassifier/MainActivity.kt",
"chars": 3426,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/drawable/ic_launcher_background.xml",
"chars": 5251,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
"chars": 1755,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/layout/activity_main.xml",
"chars": 1493,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n xmlns:android=\"http://sche"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 266,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <bac"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 266,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <bac"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/values/colors.xml",
"chars": 202,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#008577</color>\n <color name=\"colorPrim"
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/values/strings.xml",
"chars": 370,
"preview": "<resources>\n <string name=\"app_name\" translatable=\"false\">Digit Classifier</string>\n <string name=\"clear_button_text\" "
},
{
"path": "lite/codelabs/digit_classifier/android/start/app/src/main/res/values/styles.xml",
"chars": 361,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar\">\n "
},
{
"path": "lite/codelabs/digit_classifier/android/start/build.gradle",
"chars": 830,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n e"
},
{
"path": "lite/codelabs/digit_classifier/android/start/gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "lite/codelabs/digit_classifier/android/start/gradle.properties",
"chars": 1163,
"preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
},
{
"path": "lite/codelabs/digit_classifier/android/start/gradlew",
"chars": 8710,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "lite/codelabs/digit_classifier/android/start/gradlew.bat",
"chars": 2937,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "lite/codelabs/digit_classifier/android/start/settings.gradle",
"chars": 80,
"preview": "rootProject.name = 'TFLite Digit Classifier Codelab (start) App'\ninclude ':app'\n"
},
{
"path": "lite/codelabs/digit_classifier/ml/step2_train_ml_model.ipynb",
"chars": 18399,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"V2RPZQF05ngq\"\n },\n \"sou"
},
{
"path": "lite/codelabs/digit_classifier/ml/step7_improve_accuracy.ipynb",
"chars": 15283,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"5HEkgJW62Zhq\"\n },\n \"sou"
},
{
"path": "lite/codelabs/flower_classification/README.md",
"chars": 1467,
"preview": "# Codelabs for TensorFlow Lite\n\nThis folder contains the code for the TensorFlow Lite codelab:\n\n* [Recognize Flowers wit"
},
{
"path": "lite/codelabs/flower_classification/android/finish/.gitignore",
"chars": 155,
"preview": "*.iml\n.gradle\n/local.properties\n/.idea/libraries\n/.idea/modules.xml\n/.idea/workspace.xml\n.DS_Store\n/build\n/captures\n.ext"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/.gitignore",
"chars": 15,
"preview": "/build\n\n/build/"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/build.gradle",
"chars": 1589,
"preview": "apply plugin: 'com.android.application'\n\nproject.ext.ASSET_DIR = projectDir.toString() + '/src/main/assets'\n\nassert file"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/proguard-rules.pro",
"chars": 751,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/androidTest/java/AndroidManifest.xml",
"chars": 193,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/androidTest/java/org/tensorflow/lite/examples/classification/ClassifierTest.java",
"chars": 4123,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/AndroidManifest.xml",
"chars": 1055,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"org.tensorflow.lite.examples.classific"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/assets/ADD_TFLITE_MODEL_HERE",
"chars": 0,
"preview": ""
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/assets/labels.txt",
"chars": 39,
"preview": "daisy\ndandelion\nroses\nsunflowers\ntulips"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/CameraActivity.java",
"chars": 20598,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java",
"chars": 22027,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/ClassifierActivity.java",
"chars": 5211,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/LegacyCameraConnectionFragment.java",
"chars": 7207,
"preview": "package org.tensorflow.lite.examples.classification;\n\n/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/AutoFitTextureView.java",
"chars": 2581,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/OverlayView.java",
"chars": 1613,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/RecognitionScoreView.java",
"chars": 2187,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/customview/ResultsView.java",
"chars": 933,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/BorderedText.java",
"chars": 3720,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/ImageUtils.java",
"chars": 4912,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/env/Logger.java",
"chars": 6493,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/Classifier.java",
"chars": 12130,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/ClassifierFloatMobileNet.java",
"chars": 2318,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable/bottom_sheet_bg.xml",
"chars": 418,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:sha"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable/ic_baseline_add.xml",
"chars": 299,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable/ic_baseline_remove.xml",
"chars": 281,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable/ic_launcher_background.xml",
"chars": 5606,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:wi"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable/rectangle.xml",
"chars": 422,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:id="
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
"chars": 1755,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/layout/tfe_ic_activity_camera.xml",
"chars": 2251,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\n Licensed under"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/layout/tfe_ic_camera_connection_fragment.xml",
"chars": 1070,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\n Licensed under"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/layout/tfe_ic_layout_bottom_sheet.xml",
"chars": 10710,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmln"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 257,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 257,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/values/colors.xml",
"chars": 282,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"tfe_color_primary\">#ffa800</color>\n <color name=\""
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/values/dimens.xml",
"chars": 184,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <dimen name=\"tfe_bottom_sheet_corner_radius\">15dp</dimen>\n <di"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/values/strings.xml",
"chars": 1046,
"preview": "<resources>\n <string name=\"tfe_ic_app_name\" translation_description=\"Image Classification demo app [CHAR_LIMIT=40]\">T"
},
{
"path": "lite/codelabs/flower_classification/android/finish/app/src/main/res/values/styles.xml",
"chars": 417,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme.ImageClassification\" parent=\"Theme.AppCompat"
},
{
"path": "lite/codelabs/flower_classification/android/finish/build.gradle",
"chars": 678,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n\n "
},
{
"path": "lite/codelabs/flower_classification/android/finish/gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "lite/codelabs/flower_classification/android/finish/gradle.properties",
"chars": 779,
"preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
},
{
"path": "lite/codelabs/flower_classification/android/finish/gradlew",
"chars": 8710,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "lite/codelabs/flower_classification/android/finish/gradlew.bat",
"chars": 2937,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "lite/codelabs/flower_classification/android/finish/settings.gradle",
"chars": 86,
"preview": "rootProject.name = 'TFLite Flower Classification Codelab (finish) App'\ninclude ':app'\n"
},
{
"path": "lite/codelabs/flower_classification/android/start/.gitignore",
"chars": 155,
"preview": "*.iml\n.gradle\n/local.properties\n/.idea/libraries\n/.idea/modules.xml\n/.idea/workspace.xml\n.DS_Store\n/build\n/captures\n.ext"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/.gitignore",
"chars": 15,
"preview": "/build\n\n/build/"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/build.gradle",
"chars": 1317,
"preview": "apply plugin: 'com.android.application'\n\nproject.ext.ASSET_DIR = projectDir.toString() + '/src/main/assets'\n\nassert file"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/proguard-rules.pro",
"chars": 751,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/androidTest/java/AndroidManifest.xml",
"chars": 193,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/androidTest/java/org/tensorflow/lite/examples/classification/ClassifierTest.java",
"chars": 4222,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/AndroidManifest.xml",
"chars": 1094,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"org.tensorflow.lite.examples.classific"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/assets/ADD_TFLITE_MODEL_HERE",
"chars": 0,
"preview": ""
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/CameraActivity.java",
"chars": 20520,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/CameraConnectionFragment.java",
"chars": 22027,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/ClassifierActivity.java",
"chars": 5211,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/LegacyCameraConnectionFragment.java",
"chars": 7207,
"preview": "package org.tensorflow.lite.examples.classification;\n\n/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/AutoFitTextureView.java",
"chars": 2581,
"preview": "/*\n * Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/OverlayView.java",
"chars": 1613,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/RecognitionScoreView.java",
"chars": 2187,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/customview/ResultsView.java",
"chars": 933,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/BorderedText.java",
"chars": 3720,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/ImageUtils.java",
"chars": 4912,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/env/Logger.java",
"chars": 6493,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/Classifier.java",
"chars": 11241,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/java/org/tensorflow/lite/examples/classification/tflite/ClassifierFloatMobileNet.java",
"chars": 2268,
"preview": "/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable/bottom_sheet_bg.xml",
"chars": 418,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:sha"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable/ic_baseline_add.xml",
"chars": 299,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable/ic_baseline_remove.xml",
"chars": 281,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable/ic_launcher_background.xml",
"chars": 5606,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:wi"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable/rectangle.xml",
"chars": 422,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:id="
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
"chars": 1755,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/layout/tfe_ic_activity_camera.xml",
"chars": 2251,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\n Licensed under"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/layout/tfe_ic_camera_connection_fragment.xml",
"chars": 1070,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n Copyright 2019 The TensorFlow Authors. All Rights Reserved.\n\n Licensed under"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/layout/tfe_ic_layout_bottom_sheet.xml",
"chars": 10710,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmln"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 257,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 257,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/values/colors.xml",
"chars": 282,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"tfe_color_primary\">#ffa800</color>\n <color name=\""
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/values/dimens.xml",
"chars": 184,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <dimen name=\"tfe_bottom_sheet_corner_radius\">15dp</dimen>\n <di"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/values/strings.xml",
"chars": 1030,
"preview": "<resources>\n <string name=\"tfe_ic_app_name\" translation_description=\"Image Classification demo app [CHAR_LIMIT=40]\">T"
},
{
"path": "lite/codelabs/flower_classification/android/start/app/src/main/res/values/styles.xml",
"chars": 417,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme.ImageClassification\" parent=\"Theme.AppCompat"
},
{
"path": "lite/codelabs/flower_classification/android/start/build.gradle",
"chars": 678,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n\n "
},
{
"path": "lite/codelabs/flower_classification/android/start/gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "lite/codelabs/flower_classification/android/start/gradle.properties",
"chars": 779,
"preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
},
{
"path": "lite/codelabs/flower_classification/android/start/gradlew",
"chars": 8710,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "lite/codelabs/flower_classification/android/start/gradlew.bat",
"chars": 2937,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "lite/codelabs/flower_classification/android/start/settings.gradle",
"chars": 85,
"preview": "rootProject.name = 'TFLite Flower Classification Codelab (start) App'\ninclude ':app'\n"
},
{
"path": "lite/codelabs/flower_classification/ml/Flower_Classification_with_TFLite_Model_Maker.ipynb",
"chars": 9250,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"id\": \"h2q27gKz1H20\"\n },\n \"sou"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/build.gradle",
"chars": 2017,
"preview": "apply plugin: 'com.android.application'\napply plugin: 'com.google.android.gms.strict-version-matcher-plugin'\n\n\nandroid {"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/download.gradle",
"chars": 1621,
"preview": "def modelFloatDownloadUrl = \"https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobil"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/proguard-rules.pro",
"chars": 258,
"preview": "\n-keepclasseswithmembers class android.support.** { *; }\n-keepclasseswithmembers class androidx.** { *; }\n-keepclasseswi"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/androidTest/java/org/tensorflow/lite/examples/accelerationservice/CustomValidationTest.java",
"chars": 4823,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/androidTest/java/org/tensorflow/lite/examples/accelerationservice/NoopLogger.java",
"chars": 978,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/AndroidManifest.xml",
"chars": 912,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/MainActivity.java",
"chars": 11776,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/logger/Logger.java",
"chars": 878,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/logger/TextViewLogger.java",
"chars": 2035,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/AssetModel.java",
"chars": 1400,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/AssetModelFactory.java",
"chars": 1876,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/MobileNetV1.java",
"chars": 6950,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/model/PlainAddition.java",
"chars": 4872,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/java/org/tensorflow/lite/examples/accelerationservice/validator/MeanSquaredErrorValidator.java",
"chars": 3676,
"preview": "/*\n * Copyright 2023 The TensorFlow Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you"
},
{
"path": "lite/examples/acceleration_service/android_play_services/app/src/main/res/layout/activity_main.xml",
"chars": 1749,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
}
]
// ... and 1681 more files (download for full content)
About this extraction
This page contains the full source code of the tensorflow/examples GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1881 files (9.8 MB), approximately 2.7M tokens, and a symbol index with 3077 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.