横向对比 11 种算法,多伦多大学推出机器学习模型,加速长效注射剂新药研发

这篇具有很好参考价值的文章主要介绍了横向对比 11 种算法,多伦多大学推出机器学习模型,加速长效注射剂新药研发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇文章译自英文文档 Compile TFLite Models
作者是 FrozenGene (Zhao Wu) · GitHub
更多 TVM 中文文档可访问 →Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。 | Apache TVM 中文站

本文介绍如何用 Relay 部署 TFLite 模型。

首先安装 TFLite 包。

# 安装 tflite
pip install tflite==2.1.0 --user

或者自行生成 TFLite 包,步骤如下:

# 获取 flatc 编译器。
# 详细可参考 https://github.com/google/flatbuffers,确保正确安装
flatc --version

# 获取 TFLite 架构
wget https://raw.githubusercontent.com/tensorflow/tensorflow/r1.13/tensorflow/lite/schema/schema.fbs

# 生成 TFLite 包
flatc --python schema.fbs

# 将当前文件夹路径(包含生成的 TFLite 模块)添加到 PYTHONPATH。
export PYTHONPATH=${PYTHONPATH:+$PYTHONPATH:}$(pwd)

用 python -c “import tflite” 命令,检查 TFLite 包是否安装成功。

有关如何用 TVM 编译 TFLite 模型的示例如下:

用于下载和提取 zip 文件的程序

import os

def extract(path):
    import tarfile

    if path.endswith("tgz") or path.endswith("gz"):
        dir_path = os.path.dirname(path)
        tar = tarfile.open(path)
        tar.extractall(path=dir_path)
        tar.close()
    else:
        raise RuntimeError("Could not decompress the file: " + path)

加载预训练的 TFLite 模型

加载 Google 提供的 mobilenet V1 TFLite 模型:

from tvm.contrib.download import download_testdata

model_url = "http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz"

# 下载模型 tar 文件,解压得到 mobilenet_v1_1.0_224.tflite
model_path = download_testdata(model_url, "mobilenet_v1_1.0_224.tgz", module=["tf", "official"])
model_dir = os.path.dirname(model_path)
extract(model_path)

# 打开 mobilenet_v1_1.0_224.tflite
tflite_model_file = os.path.join(model_dir, "mobilenet_v1_1.0_224.tflite")
tflite_model_buf = open(tflite_model_file, "rb").read()

# 从缓冲区获取 TFLite 模型
try:
    import tflite

    tflite_model = tflite.Model.GetRootAsModel(tflite_model_buf, 0)
except AttributeError:
    import tflite.Model

    tflite_model = tflite.Model.Model.GetRootAsModel(tflite_model_buf, 0)

加载测试图像

还是用猫的图像:

from PIL import Image
from matplotlib import pyplot as plt
import numpy as np

image_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true"
image_path = download_testdata(image_url, "cat.png", module="data")
resized_image = Image.open(image_path).resize((224, 224))
plt.imshow(resized_image)
plt.show()
image_data = np.asarray(resized_image).astype("float32")

# 给图像添加一个维度,形成 NHWC 格式布局
image_data = np.expand_dims(image_data, axis=0)

# 预处理图像:
# https://github.com/tensorflow/models/blob/edb6ed22a801665946c63d650ab9a0b23d98e1b1/research/slim/preprocessing/inception_preprocessing.py#L243
image_data[:, :, :, 0] = 2.0 / 255.0 * image_data[:, :, :, 0] - 1
image_data[:, :, :, 1] = 2.0 / 255.0 * image_data[:, :, :, 1] - 1
image_data[:, :, :, 2] = 2.0 / 255.0 * image_data[:, :, :, 2] - 1
print("input", image_data.shape)

横向对比 11 种算法,多伦多大学推出机器学习模型,加速长效注射剂新药研发
输出结果:

input (1, 224, 224, 3)

使用 Relay 编译模型

# TFLite 输入张量名称、shape 和类型
input_tensor = "input"
input_shape = (1, 224, 224, 3)
input_dtype = "float32"

# 解析 TFLite 模型,并将其转换为 Relay 模块
from tvm import relay, transform

mod, params = relay.frontend.from_tflite(
    tflite_model, shape_dict={input_tensor: input_shape}, dtype_dict={input_tensor: input_dtype}
)

# 针对 x86 CPU 构建模块
target = "llvm"
with transform.PassContext(opt_level=3):
    lib = relay.build(mod, target, params=params)

输出结果:

/workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
  "target_host parameter is going to be deprecated. "

在 TVM 上执行

import tvm
from tvm import te
from tvm.contrib import graph_executor as runtime

# 创建 runtime 执行器模块
module = runtime.GraphModule(lib["default"](tvm.cpu()))

# 输入数据
module.set_input(input_tensor, tvm.nd.array(image_data))

# 运行
module.run()

# 得到输出
tvm_output = module.get_output(0).numpy()

显示结果

# 加载标签文件
label_file_url = "".join(
    [
        "https://raw.githubusercontent.com/",
        "tensorflow/tensorflow/master/tensorflow/lite/java/demo/",
        "app/src/main/assets/",
        "labels_mobilenet_quant_v1_224.txt",
    ]
)
label_file = "labels_mobilenet_quant_v1_224.txt"
label_path = download_testdata(label_file_url, label_file, module="data")

# 1001 个类的列表
with open(label_path) as f:
    labels = f.readlines()

# 将结果转换为一维数据
predictions = np.squeeze(tvm_output)

# 获得分数最高的第一个预测值
prediction = np.argmax(predictions)

# 将 id 转换为类名,并显示结果
print("The image prediction result is: id " + str(prediction) + " name: " + labels[prediction])

输出结果:

The image prediction result is: id 283 name: tiger cat

下载 Python 源代码:from_tflite.py

下载 Jupyter Notebook:from_tflite.ipynb文章来源地址https://www.toymoban.com/news/detail-455308.html

到了这里,关于横向对比 11 种算法,多伦多大学推出机器学习模型,加速长效注射剂新药研发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 横向对比 npm、pnpm、tnpm、yarn 优缺点

    前端工程化 是现代Web开发中不可或缺的一环,它的出现极大地提升了前端开发的效率和质量。 在过去,前端开发依赖于手动管理文件和依赖,这导致了许多问题,如 版本冲突 、 依赖混乱 和 构建繁琐 等。而今,随着众多前端工程化工具的出现,前端开发的效率得到了大大

    2024年02月10日
    浏览(44)
  • 青岛大学_王卓老师【数据结构与算法】Week05_11_栈与递归_学习笔记

    本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–第05周11–3.4栈和递归 递归的定义

    2024年02月16日
    浏览(48)
  • 青岛大学_王卓老师【数据结构与算法】Week04_11_案例分析与实现1_学习笔记

    本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–第04周11–2.8案例分析与实现1–多项

    2024年02月12日
    浏览(47)
  • [闪存2.1.4] 3D(三维)NAND图文详解_2D NAND 和 3D NAND 横向对比_VNAND 技术详解

      传送门   总目录  所在专栏   《深入理解SSD》 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 2.1.4.1. 何为 3D NAND? 2.1.4.2. 3D NAND 技术 2.1.4.

    2024年02月07日
    浏览(35)
  • [深入理解NAND Flash (架构篇) ] 3D(三维)NAND图文详解_2D NAND 和 3D NAND 横向对比_VNAND 技术详解

      传送门   总目录  所在专栏   《深入理解SSD》 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 2.1.4.1. 何为 3D NAND? 2.1.4.2. 3D NAND 技术 2.1.4.

    2024年02月14日
    浏览(38)
  • 2022-11 CSS:flex布局父子宽度问题-小程序scrollView-div横向滚动字体超出隐藏-居中

    如上图第二行子元素宽度会跟随第一行宽度 解决方案: 对第二行设置: width: max-content; 使其宽度跟随自身内容 如上图,左侧宽高为112rpx,宽度不生效 解决方案: 对左侧图片设置宽高的同时, 设置最小宽高 效果如下: 例1:

    2024年02月09日
    浏览(58)
  • MPC自动驾驶横向控制算法实现 c++

    参考博客: (1)无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现【40行代码】 (2)【自动驾驶】模型预测控制(MPC)实现轨迹跟踪 (3)自动驾驶——模型预测控制(MPC)理解与实践 (4)MPC算法学习(1) 0 前言 前面介绍的PID、Pure pursuit、Stanley都只是利用当前的

    2024年02月22日
    浏览(46)
  • 《横向联邦学习中 PCA差分隐私数据发布算法》论文算法原理笔记

    论文地址:https://www.arocmag.com/article/01-2022-01-041.html 论文摘要      为了让不同组织在保护本地敏感数据和降维后发布数据隐私的前提下,联合使用 PCA进行降维和数据发布,提出 横向联邦 PCA差分隐私数据发布算法 。引入随机种子联合协商方案,在各站点之间以较少通信代

    2024年02月08日
    浏览(38)
  • 机器人控制算法——移动机器人横向控制最优控制LQR算法

    1.Introduction LQR (外文名linear quadratic regulator)即线性二次型调节器,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标(事实也可以对不稳定的系统进行整定) ,而且方法简单便于实现 ,同时利用 Matlab 强

    2024年02月04日
    浏览(48)
  • 大学物理·第11章【光学】

    光是一种电磁波 来自同一束光,经过不同的反射投射之类的,然后又重新汇聚到一点,形成增强或者减弱的效果 普通光源发光特点: 原子发光是断续的,每次发光形成一个短短的波列, 各原子各次发光相互独立,各波列互不相干 d’——双缝到屏幕的距离 d——两个缝之间的

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包