-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy path在移动设备上部署机器学习模型
55 lines (44 loc) · 1.51 KB
/
在移动设备上部署机器学习模型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
在移动设备上部署机器学习模型
1.操作系统不同
2.存储容量不同
主要目的:减小模型文件大小,保持准确率
#TensorFlow Lite
#转化器 和 翻译器
import tensorflow as tf
#创建转化器(共三种方式)
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter = tf.lite.TFLiteConverter.from_concrete_functions()
#转化模型
tflite_model = converter.convert()
#保存文件
open("converted_model.tflite", "wb").write(tflite_model)
#在不同系统上,翻译器所用的语言不同
#安卓:Java or C++
#苹果:Swift or Objective-C
#加载并运行模型
import numpy as np
import tensorflow as tf
#创建翻译器
interpreter = tf.lite.Interpreter(model_path="converted_model.tflite")
interpreter.allocate_tensors()
#为输入输出分配张量
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
#输入
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)
#model(input_data)
#计算
interpreter.invoke()
#输出
output_data = interpreter.get_tensor(output_details[0]['index'])
#量化模型
import tensorflow as tf
#创建转化器
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
#优化类型
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
#转换
tflite_quant_model = converter.convert()