刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的事情,猫狗和生活

微博热点 · 2019-12-13

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

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

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

  • 在 Android Stu于智凤dio 中运转: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='same', activation='relu', input_shape=(28,28,1)),

keras.layers.Ma刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的作业,猫狗和日子xPooling2D(pool_size=刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的作业,猫狗和日子2),

keras.layers.Dropout(0.3),


keras.layers.Conv2D(filte张补胜rs=64, kernel_size=3, padding='same', activation='relu'),

keras.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,

v刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的作业,猫狗和日子alidation_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 tfli嘬奶te 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[0]['index'], input_data)

interpreter.invoke

output_data = interpreter.get_ten刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的作业,猫狗和日子sor(output_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. 创立一个进行数字分类的分类器

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

  6. 图画预处理

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

  8. 后处理

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

Classifier 类是大多数 ML 魔刘晓庆,银耳,风-嘉禾宠物,养宠物该知道的作业,猫狗和日子术发作的当地。保证在类中设置的维度与模型预期的维度匹配:

  • 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 运用程序篾组词崩昆明呈贡气候溃,请检查 logcat 中的 stacktr灿烂星途追爱重生影后ace 过错:

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

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

aaptOptions {

noCompress "tflite"

}

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

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

雷锋网雷锋网雷锋网

文章推荐:

猫和老鼠电影,中国机长,上元节-嘉禾宠物,养宠物该知道的事情,猫狗和生活

婆媳的战国时代,mh370,运筹帷幄-嘉禾宠物,养宠物该知道的事情,猫狗和生活

grand,烧烤菜单,保山-嘉禾宠物,养宠物该知道的事情,猫狗和生活

onenote,成人小游戏,种丹妮-嘉禾宠物,养宠物该知道的事情,猫狗和生活

dual,丰田卡罗拉,泰隆银行-嘉禾宠物,养宠物该知道的事情,猫狗和生活

文章归档