TensorFlow lite keras api训练手写数字识别集Mnist,生成tflite模型文件并在Android上使用示例

源码:https://github.com/lany192/tensorflow-lite-keras-mnist-android

TensorFlow Lite Keras训练Mnist示例

TensorFlow Keras训练手写数字识别集Mnist,生成tflite模型文件并在Android上使用示例

训练代码

import tensorflow as tf

print('当前tensortflow版本:{0}'.format(tf.__version__))
print('当前keras版本:{0}'.format(tf.keras.__version__))
mnist = tf.keras.datasets.mnist  # mnist 是 28x28 的手写数字图片和对应标签的数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()  # 分割数据集

x_train = tf.keras.utils.normalize(x_train, axis=1)  # 把数据值缩放到 0 到 1
x_test = tf.keras.utils.normalize(x_test, axis=1)

model = tf.keras.models.Sequential()  # 基础的前馈神经网络模型
model.add(tf.keras.layers.Flatten(
    input_shape=(28, 28)))  # 把图片展平,这里指定了input_shape 参数,否则模型无法通过 model.save() 保存
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))  # 简单的全连接图层,,128 个单元,激活函数为 relu
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))  # 输出层 ,10 个单元, 使用 Softmax 获得概率分布

model.compile(optimizer='adam',  # 默认的较好的优化器
              loss='sparse_categorical_crossentropy',  # 评估“错误”的损失函数,模型应该尽量降低损失
              metrics=['accuracy'])  # 评价指标

model.fit(x_train, y_train, epochs=3)  # 训练模型

val_loss, val_acc = model.evaluate(x_test, y_test)  # 评估模型对样本数据的输出结果
print('模型的损失值:', val_loss)
print('模型的准确度:', val_acc)

# 保存成HDF5模型
keras_file = "keras_mnist_model.h5"
tf.keras.models.save_model(model, keras_file)

# 转成tflite模型
converter = tf.lite.TFLiteConverter.from_keras_model_file(keras_file)
tflite_model = converter.convert()
open("keras_mnist_model.tflite", "wb").write(tflite_model)

模型的训练

运行python文件夹下的keras_mnist_tflite.py,生成H5模型文件,然后将h5模型转化成tflite模型,得到keras_mnist_model.tflite

使用模型

将训练生成的模型文件keras_mnist_model.tflite拷贝到assets文件夹,供android读取

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于使用TensorFlow 2.3训练数字识别模型并将其量化为TFLite,然后部署到OpenMV上,你可以按照以下步骤进行操作: 1. 数据准备:收和准备用于数字识别的图像数据。确保数据具有适当的标签和类别。 2. 模型训练使用TensorFlow 2.3构建和训练适合数字识别模型,例如卷积神经网络(CNN)。确保在训练过程中使用适当的评估指标和优化算法。 3. 模型量化:在训练完成后,将训练好的模型量化为TFLite格式。TFLite是一种针对移动和嵌入式设备的轻量级模型表示形式。 ```python import tensorflow as tf # 加载训练好的模型 model = tf.keras.models.load_model('trained_model.h5') # 量化模型 converter = tf.lite.TFLiteConverter.from_keras_model(model) converter.optimizations = [tf.lite.Optimize.DEFAULT] tflite_model = converter.convert() # 保存量化后的模型 with open('quantized_model.tflite', 'wb') as f: f.write(tflite_model) ``` 4. OpenMV准备:确保你已经按照OpenMV官方文档的指导,设置并准备好OpenMV开发环境。 5. 部署到OpenMV:将量化后的TFLite模型部署到OpenMV上进行推理。可以使用OpenMV的MicroPython编程语言进行开发。 - 将`quantized_model.tflite`文件复制到OpenMV设备上,例如SD卡。 - 在OpenMV上编写MicroPython代码,加载模型并进行推理。 ```python import sensor import image import lcd # 初始化OpenMV模块 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) # 加载TFLite模型 import tf model = tf.load('quantized_model.tflite') # 进行推理 while True: img = sensor.snapshot() # 对图像进行预处理 # ... # 进行推理 output = model.forward(img) # 处理推理结果 # ... ``` 这个过程中,你需要根据你的具体需求和OpenMV设备的要求进行适当的调整和修改。上述步骤仅供参考,你可以根据实际情况进行调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值