<small id='zlIY1KU'></small> <noframes id='XnCJb7Tiz'>

  • <tfoot id='0VYp8TAg6'></tfoot>

      <legend id='F0qXfl'><style id='QZOxu'><dir id='UMlz'><q id='3KtJO'></q></dir></style></legend>
      <i id='Pyg5'><tr id='iPdsXq'><dt id='FGPe'><q id='oLF0R'><span id='cfxPaO'><b id='rx8nPMK'><form id='PNaqr'><ins id='j9lk'></ins><ul id='Mp3v24QX'></ul><sub id='j1SbvD8uKd'></sub></form><legend id='bdg5Q0B'></legend><bdo id='lNh4HgaU'><pre id='4kSPZVf6M7'><center id='QGvw0EK5'></center></pre></bdo></b><th id='6RQ8i'></th></span></q></dt></tr></i><div id='MmPtUlh3H5'><tfoot id='4rXmQkHW'></tfoot><dl id='UIial'><fieldset id='OHkCrZNVI'></fieldset></dl></div>

          <bdo id='EUQIm'></bdo><ul id='hdK5NtaWuw'></ul>

          1. <li id='9OJ5X3qb'></li>
            登陆

            手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转

            admin 2019-12-12 134人围观 ,发现0个评论

            本教程介绍怎么运用 tf.Keras 时序 API 从头开始练习模型,将 tf.Keras 模型转化为 tflite 格局,并在 Android 上运转该模型。我将以 MNIST 数据为例介绍图画分类,并共享一些你或许会面对的常见问题。本教程着重于端到端的体会,我不会深入探讨各种 tf.Keras API 或 Android 开发。

            下载我的示例代码并履行以下操作:

            • 在 colab 中运转:运用 tf.keras 的练习模型,并将 keras 模型转化为 tflite(链接到 Colab notebook)。

            • 在 Android Studio 中运转:DigitRecognizer(链接到Android运用程序)。

            1.练习自界说分类器

            加载数据

            咱们将运用作为tf.keras结构一部分的mnst数据。

            (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data

            预处理数据

            接下来,咱们将输入图画从 28x28 变为 28x28x1 的形状,将其标准化,并对标签进行 one-hot 编码。

            界说模型体系结构

            然后咱们将用 cnn 界说网络架构。

            def create_model:


            # Define the model architecture

            model = keras.models.Sequential([

            # Must define the input shape in the first layer of the neural network

            keras.layers.Conv2D(filters=32, kernel_size=3, padding='sam手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转e', activation='relu', input_shape=(28,28,1)),

            keras.layers.MaxPooling2D(pool_size=2),

            keras.layers.Dropout(0.3),


            keras.layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'),

            k血战中原第二部eras.layers.MaxPooling2D(pool_size=2),

            keras.layers.Dropout(0.3),


            keras.layers.Flatten(),

            keras.layers.Dense(128, activation='relu'),

            keras.layers.Dropout(0.5),

            keras.layers.Dense(10, activation='softmax')

            ])


            # Compile the model

            model.compile(loss=keras.losses.categorical_crossentropy,

            optimizer=keras.optimizers.Adam,

            metrics=['accuracy'])


            return model

            练习模型

            然后咱们运用 model.fit来练习模型。

            model.fit(x_train,

            y_train,

            batch_size=64,

            epochs=3,

            validation_data=(x_test, y_test))

            2.模型保存和转化

            练习完毕后,咱们将保存一个 Keras 模型并将其转化为 TFLite 格局。

            保存一个 Keras 模型

            下面是保存 Keras 模型的办法-

            # Save tf.keras model in HDF5 format

            keras_model = "mnist_keras_model.h5"

            keras.models.save_model(model, keras_model)

            将keras模型转化为tflite

            当运用 TFLite 转化器将 Keras 模型转化为 TFLite 格局时,有两个挑选- 1)从命令行转化,或 2)直接在 python 代码中转化,这个愈加引荐。

            1)经过命令行转化

            $ tflite_convert \

            $ --output_file=mymodel.tflite \

            $ --keras_model_file=mymodel.h5

            2)经过 python 代码转化

            假如你可以拜访模型练习代码,则这是转化的首选办法。

            # Convert the model

            flite_model = converter.convert


            # Create the tflite model file

            tflite_model_name = "mymodel.tflite"

            open(tflite_model_name, "wb").write(tflite_model)

            你可以将转化器的练习后量化设置为 true。

            # Set quantize to true

            converter.post_training_quantize=True

            验证转化的模型

            将 Keras 模型转化为 TFLite 格局后,验证它是否可以与原始 Keras 模型相同正常运转是很重要的。请参阅下面关于怎么运用 TFLite 模型运转揣度的 python 代码片段。示例输入是随机输入数据,你需求依据自己的数据更新它。

            # Load TFLite model and allocate tensors. interpreter = tf.contrib.lite.Interpreter(model_path="converted_model.tflite")

            interpreter.allocate_tensors


            # Get input and output tensors

            input_details = interpreter.get_input_details output_details = interpreter.get_output_details


            # Test model on random input data

            input_shape = input_details[0]['shape']

            input_data = np.array(np.random.random_sample(input_shape),

            dtype=np.float32) interpreter.set_tensor(input_details[手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转0]['index'], input_data)

            interpreter.invoke

            output_data = interpreter.get_tensor(o手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转utput_details[0]['index'])

            print(output_data)

            ps:保证在转化后和将 TFLite 模型放到 Android 上面之前一直测验它。不然,当它在你的 Android 运用程序上不能作业时,你无法辨明是你的 android 代码有问题仍是 ML 模型有问题。

            3.在 Android 上完成 tflite 模型

            现在咱们预备在 Android 上完成 TFLite 模型。创立一个新的 Android 项目并遵从以下过程

            1. 将 mnist.tflite 模型放在 assets 文件夹下

            2. 更新 build.gradle 以包括 tflite 依靠项

            3. 为用户创立自界说视图

            4. 创立一个进行数字分类的分类器手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转

            5. 从自界说视图输入图画

            6. 图画预处理

            7. 用模型对图画进行分类

            8. 后处理

            9. 在用户界面中显现成果

            Classifier 类是大多数 ML 戏法发作的当地。保证在类中设置的维度与模型预期的维度手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转匹配:

            • 28x28x1 的图画

            • 10 位数字的 10 个类:0、1、2、3…9

            要对图画进行分类,请履行以下过程:

            • 预处理输入图画。将位图转化为 bytebuffer 并将像素转化为灰度,由于 MNIST 数据集是灰度的。

            • 运用由内存映射到 assets 文件夹下的模型文件创立的解说器运转揣度。

            • 后处理输出成果以在 UI 中显现。咱们得到的成果有 10 种或许,咱们将挑选在 UI 中显现概率最高的数字。

            过程中的应战

            以下是你或许遇到的应战:

            • 在 tflite 转化期间,假如呈现「tflite 不支持某个操作」的过错,则应恳求 tensorflow 团队增加该操作或自己创立自界说运算符。

            • 有时,转化似乎是成功的,但转化后的模型却不起作用:例如,转化后的分类器或许在正负测验中以~0.5 的精度随机分类。(我在 tf 1.10 中遇到了这个过错,后来在 tf1.12 中修正了它)。

            假如 Android 运用程序溃散,请检查手把手教程:怎么从零开始练习 TF 模型并在安卓体系上运转 logcat 中的 stacktrace 过错:

            • 保证输入图画巨细和色彩通道设置正确,以匹配模型期望的输入张量巨细。

            • 保证 in build.gradle aaptoptions 设置为不紧缩 tflite 文件。

            aaptOptions {

            noCompress "tflite"

            }

            整体来说,用 tf.Keras 练习一个简略的图画分类器是垂手可得的,保存 Keras 模型并将其转化为 TFLite 也适当简单。现在,咱们在 Android 上完成 TFLite 模型的办法依然有点单调,期望将来能有所改进。

            via:https://medium.com/@margaretmz/e2e-tfkeras-tflite-android-273acde6588

            雷锋网雷锋网雷锋网

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP