区块链技术博客
www.b2bchain.cn

使用 Bazel 交叉编译 tflite求职学习资料

D0b2wT.gif

本文介绍了使用 Bazel 交叉编译 tflite求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

在之前的文章中,我们提到了如何使用 bazel 来进行交叉编译。在这里我们将小小的实践下,用短短的几行命令快速编译出能在树莓派上运行的 tflite minial 样例程序。

目标说明

这次我们希望能够编译出一个最最最简单的 tflite 程序(输出展示指定模型网络结构信息)。其代码可以在官方的 Github 中这里找到。目前官网没有给出如何交叉编译出能使用这个小程序的教程,不过我们可以在网上搜索大大的博客,最终会给出一个使用 Makefile 来编译的方法。

PS:看 TF 官网的时候建议选择英文来看,中文的内容会比英文的稍稍滞后。

编译方法

思路很简单如下:

  • 使用自己或者官方给出的 bazel 的 toolchain(这里我们使用官方 TF 中给出的 cc_toolchain)
  • 把 minial.cc 拷出来,然后在 BUILD 文件中配置对应的依赖

和上篇文章一样,具体的实现我已经更新到 Github 仓库中了。

具体步骤

  1. 在 WORKSPACE 中配置最新的 tensorflow 的 git repo,让 bazel 知道去哪里下载相关文件

    tflite 的源码就在 tensorflow 的项目中,同时 tensorflow 中也有经过了时间检验的交叉编译 toolchains,因此我们希望 bazel 能知道如何找到这个项目并下载下来。这个步骤非常简单,就是使用 bazel 中自带的 git_repository 即可。

    WORSPACE 中的配置如下:

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")  # Needed by TensorFlow http_archive(     name = "io_bazel_rules_closure",     sha256 = "e0a111000aeed2051f29fcc7a3f83be3ad8c6c93c186e64beb1ad313f0c7f9f9",     strip_prefix = "rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df",     urls = [         "http://mirror.tensorflow.org/github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",         "https://github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",  # 2019-04-04     ], )  git_repository(     name = "org_tensorflow",     remote = "https://github.com.cnpmjs.org//tensorflow/tensorflow.git",     tag = "v2.4.0" )  load("@org_tensorflow//tensorflow:workspace.bzl", "tf_workspace") tf_workspace(tf_repo_name = "org_tensorflow")

    这样在配置文件中使用 @org_tensorflow 就可以直接指定这个文件夹了,这个可以在下一步配置依赖项中看见。

    PS:这里可以看到我的 remote 用的是 [github.com.cnpmjs.org](http://github.com.cnpmjs.org) 来提高下载速度去防止 404,如果你能 fq 的话设置成正常的 github 网址就好了。

  2. 添加官方用例 minimal.cc,并在 BUILD 中配置依赖项

    经过第一步的操作,bazel 已经可以得到 tensorflow 的源码了,这一步我们需要配置 minimal.cc 具体需要哪些依赖,简单的来说就是编译部分 tflite 源码即可。BUILD 文件中的 配置如下:

    “`bash

在之前的文章中,我们提到了如何使用 bazel 来进行交叉编译。在这里我们将小小的实践下,用短短的几行命令快速编译出能在树莓派上运行的 tflite minial 样例程序。

目标说明

这次我们希望能够编译出一个最最最简单的 tflite 程序(输出展示指定模型网络结构信息)。其代码可以在官方的 Github 中这里找到。目前官网没有给出如何交叉编译出能使用这个小程序的教程,不过我们可以在网上搜索大大的博客,最终会给出一个使用 Makefile 来编译的方法。

PS:看 TF 官网的时候建议选择英文来看,中文的内容会比英文的稍稍滞后。

编译方法

思路很简单如下:

  • 使用自己或者官方给出的 bazel 的 toolchain(这里我们使用官方 TF 中给出的 cc_toolchain)
  • 把 minial.cc 拷出来,然后在 BUILD 文件中配置对应的依赖

和上篇文章一样,具体的实现我已经更新到 Github 仓库中了。

具体步骤

  1. 在 WORKSPACE 中配置最新的 tensorflow 的 git repo,让 bazel 知道去哪里下载相关文件

    tflite 的源码就在 tensorflow 的项目中,同时 tensorflow 中也有经过了时间检验的交叉编译 toolchains,因此我们希望 bazel 能知道如何找到这个项目并下载下来。这个步骤非常简单,就是使用 bazel 中自带的 git_repository 即可。

    WORSPACE 中的配置如下:

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")  # Needed by TensorFlow http_archive(     name = "io_bazel_rules_closure",     sha256 = "e0a111000aeed2051f29fcc7a3f83be3ad8c6c93c186e64beb1ad313f0c7f9f9",     strip_prefix = "rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df",     urls = [         "http://mirror.tensorflow.org/github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",         "https://github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",  # 2019-04-04     ], )  git_repository(     name = "org_tensorflow",     remote = "https://github.com.cnpmjs.org//tensorflow/tensorflow.git",     tag = "v2.4.0" )  load("@org_tensorflow//tensorflow:workspace.bzl", "tf_workspace") tf_workspace(tf_repo_name = "org_tensorflow")

    这样在配置文件中使用 @org_tensorflow 就可以直接指定这个文件夹了,这个可以在下一步配置依赖项中看见。

    PS:这里可以看到我的 remote 用的是 [github.com.cnpmjs.org](http://github.com.cnpmjs.org) 来提高下载速度去防止 404,如果你能 fq 的话设置成正常的 github 网址就好了。

  2. 添加官方用例 minimal.cc,并在 BUILD 中配置依赖项

    经过第一步的操作,bazel 已经可以得到 tensorflow 的源码了,这一步我们需要配置 minimal.cc 具体需要哪些依赖,简单的来说就是编译部分 tflite 源码即可。BUILD 文件中的 配置如下:

    “`bash

在之前的文章中,我们提到了如何使用 bazel 来进行交叉编译。在这里我们将小小的实践下,用短短的几行命令快速编译出能在树莓派上运行的 tflite minial 样例程序。

目标说明

这次我们希望能够编译出一个最最最简单的 tflite 程序(输出展示指定模型网络结构信息)。其代码可以在官方的 Github 中这里找到。目前官网没有给出如何交叉编译出能使用这个小程序的教程,不过我们可以在网上搜索大大的博客,最终会给出一个使用 Makefile 来编译的方法。

PS:看 TF 官网的时候建议选择英文来看,中文的内容会比英文的稍稍滞后。

编译方法

思路很简单如下:

  • 使用自己或者官方给出的 bazel 的 toolchain(这里我们使用官方 TF 中给出的 cc_toolchain)
  • 把 minial.cc 拷出来,然后在 BUILD 文件中配置对应的依赖

和上篇文章一样,具体的实现我已经更新到 Github 仓库中了。

具体步骤

  1. 在 WORKSPACE 中配置最新的 tensorflow 的 git repo,让 bazel 知道去哪里下载相关文件

    tflite 的源码就在 tensorflow 的项目中,同时 tensorflow 中也有经过了时间检验的交叉编译 toolchains,因此我们希望 bazel 能知道如何找到这个项目并下载下来。这个步骤非常简单,就是使用 bazel 中自带的 git_repository 即可。

    WORSPACE 中的配置如下:

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")  # Needed by TensorFlow http_archive(     name = "io_bazel_rules_closure",     sha256 = "e0a111000aeed2051f29fcc7a3f83be3ad8c6c93c186e64beb1ad313f0c7f9f9",     strip_prefix = "rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df",     urls = [         "http://mirror.tensorflow.org/github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",         "https://github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz",  # 2019-04-04     ], )  git_repository(     name = "org_tensorflow",     remote = "https://github.com.cnpmjs.org//tensorflow/tensorflow.git",     tag = "v2.4.0" )  load("@org_tensorflow//tensorflow:workspace.bzl", "tf_workspace") tf_workspace(tf_repo_name = "org_tensorflow")

    这样在配置文件中使用 @org_tensorflow 就可以直接指定这个文件夹了,这个可以在下一步配置依赖项中看见。

    PS:这里可以看到我的 remote 用的是 [github.com.cnpmjs.org](http://github.com.cnpmjs.org) 来提高下载速度去防止 404,如果你能 fq 的话设置成正常的 github 网址就好了。

  2. 添加官方用例 minimal.cc,并在 BUILD 中配置依赖项

    经过第一步的操作,bazel 已经可以得到 tensorflow 的源码了,这一步我们需要配置 minimal.cc 具体需要哪些依赖,简单的来说就是编译部分 tflite 源码即可。BUILD 文件中的 配置如下:

    “`bash

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 使用 Bazel 交叉编译 tflite求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们