精华内容
下载资源
问答
  • Tensorflow源码编译常见问题点总结
    2020-12-23 18:21:11

    Tensorflow源码编译分两种:一种是本地源码编译,另一种是针对ARM平台的源码编译.

    接下来分别介绍:

    一.本地编译

    本地编译时,使用的编译工具是本地GCC.

    一般会碰到以下问题:

    第1个:external/nasm/include/error.h 找不到

    解决方法:

    执行命令:sudo cp external/nasm/include/error.h  external/nasm/

    二.ARM交叉编译

    第一步:配置环境:

    ./configure

    配置python环境为:/usr/bin/python2.7

    编译时,常见问题:

    第1个:/home/jim/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed/openssl/bn.h:fatal error: openssl/e_os2.h: No such file or directory

    修改目录:/home/jim/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed/openssl 为openssl_old

    /home/jim/sysroots/x86_64-pokysdk-linux/cortexa9hf-neon-poky-linux-gnueabi/usr/include/openssl 为openssl_old

    第2个:int_max_32 :redifinition in in /usr/include/google/protobuf/

    修改目录:/usr/include/google/protobuf 为protobuf_old

    第3个:/usr/include/python2.7/pyconfig.h:24:54: fatal error: arm-linux-gnueabihf/python2.7/pyconfig.h: No such file or directory

    打开文件:/usr/include/python2.7/pyconfig.h, 去掉前缀:arm-linux-gnueabihf/

    更多相关内容
  • TensorFlow源码编译

    2021-10-29 19:03:51
    1、版本tensorflow-1.15.5 https://github.com/tensorflow/tensorflow/releases/tag/v1.15.5 Note that this is the last patch release for the TensorFlow 1.x series. 本文将源代码下载在/home/svn路径下,并在...

    1、版本tensorflow-1.15.5

    https://github.com/tensorflow/tensorflow/releases/tag/v1.15.5

    Note that this is the last patch release for the TensorFlow 1.x series.
    本文将源代码下载在/home/svn路径下,并在编译完成后,将编译所得tensorflow环境,统一放置在/home/svn/tensorflow路径。

    2、使用对应版本的python

    cd /usr/bin/
    ln -s python3.6 python
    

    3、安装对应版本的bazel

    https://github.com/bazelbuild/bazel/releases?page=6

    wget https://github.com/bazelbuild/bazel/releases/download/0.26.1/bazel-0.26.1-installer-linux-x86_64.sh 
    # 查看安装设置
    ./bazel-0.26.1-installer-linux-x86_64.sh --help
    # 执行安装
    ./bazel-0.26.1-installer-linux-x86_64.sh
    

    如果bazel版本不匹配,在编译TensorFlow时会报如下错误:
    bazel版本与tensorflow版本不匹配

    4、安装protobuf

    https://github.com/protocolbuffers/protobuf/blob/master/src/README.md

    wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-all-3.9.0.tar.gz 
    tar zxvf protobuf-all-3.9.0.tar.gz
    cd protobuf-3.9.0
    # generated the configure script
    ./autogen.sh
    # 默认安装位置为/usr/local/,可以根据需要修改
    ./configure --prefix=/home/svn/third/third64/protobuf-3.9.0
    make
    make check
    make install
    # 查看是否安装成功
    protoc --version
    

    TensorFlow的protobuf版本兼容问题
    详见:

    https://blog.csdn.net/Li_suhuan/article/details/121041248

    5、编译Tensorflow

    wget https://github.com/tensorflow/tensorflow/archive/refs/tags/v1.15.5.tar.gz 
    tar zxvf v1.15.5.tar.gz
    cd tensorflow-1.15.5
    ./configure
    

    编译设置选项如图:
    tensorflow编译设置
    执行编译:

    # 有显卡
    bazel build --config=opt --config=cuda //tensorflow:libtensorflow_cc.so
    # 无显卡
    bazel build --config=opt //tensorflow:libtensorflow_cc.so
    

    6、编译第三方库

    cd /home/svn/tensorflow-1.15.5/tensorflow/contrib/makefile
    ./build_all_linux.sh
    

    GCC 8 编译时会报错,解决方法如下:

    gcc8编译tensorflow报错解决
    https://blog.felgo.com/cross-platform-development/machine-learning-add-image-classification-for-ios-and-android-with-qt-and-tensorflow

    编译eigen3
    cd /home/svn/tensorflow-1.15.5/tensorflow/contrib/makefile/downloads/eigen/
    mkdir build
    cd build
    cmake ..
    make
    make install
    

    编译出的eigen3文件夹在/usr/local/include目录下,可以移动到需要的地方

    7、环境准备

    在/home/svn/下建立tensorflow文件夹,并在其下建立include和lib
    其中lib存放编译出的so

    cd /home/svn/tensorflow/lib/
    cp /home/svn/tensorflow-1.15.5/bazel-genfiles/tensorflow/libtensorflow_cc.so ./
    cp /home/svn/tensorflow-1.15.5/bazel-genfiles/tensorflow/libtensorflow_framework.so.1 ./
    mv libtensorflow_framework.so.1 libtensorflow_framework.so
    

    include存放所需的头文件

    cp -r /home/svn/tensorflow-1.15.5/tensorflow /home/svn/tensorflow/include/
    cp -r /home/svn/tensorflow-1.15.5/bazel-genfiles/tensorflow/* /home/svn/tensorflow/include/tensorflow/
    # so文件放在lib中即可,这里不需要
    rm /home/svn/tensorflow/include/tensorflow/libtensorflow_*
    # 第三方库
    mkdir /home/svn/tensorflow/include/tensorflow/third_party
    cp -r /home/svn/tensorflow-1.15.5/tensorflow/contrib/makefile/downloads/eigen /home/svn/tensorflow/include/tensorflow/third_party/eigen3
    # 编译的时候缺啥补啥
    cp /home/svn/tensorflow-1.15.5/bazel-tensorflow-1.15.5/third_party/eigen3/unsupported/Eigen/CXX11/FixedPoint  /home/svn/tensorflow/include/tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/
    cp -r /usr/local/include/eigen3/unsupported/Eigen/CXX11/* /home/svn/tensorflow/include/tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/
    cp -r /home/svn/tensorflow-1.15.5/bazel-tensorflow-1.15.5/third_party/eigen3/unsupported/Eigen/CXX11/src /home/svn/tensorflow/include/tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/
    

    https://www.cnblogs.com/dzzy/p/13493876.html

    至此安装完成,使用时添加相应的include和lib路径即可

    # tensorflow
    INCLUDE   += -I/home/svn/tensorflow/include/
    INCLUDE   += -I/home/svn/tensorflow/include/tensorflow/third_party/eigen3/
    INCLUDE   += -I/home/svn/tensorflow/include/tensorflow/
    INCLUDE   += -I/home/svn/tensorflow/include/tensorflow/contrib/makefile/downloads/absl
    
    LIB       += -L/home/svn/tensorflow/lib/ -ltensorflow_framework -ltensorflow_cc -lz
    
    展开全文
  • Tensorflow源码编译

    2020-10-13 15:29:13
    相比源码编译各版本之间遇到的坑来说,pip安装真心省事。不过由于项目需要采用C++实现的整个感知模块,只能把DL前向传播这块也写成C++形式。这是我去年的编译过程,当时有不少坑没能记录下来,以后有机会再往这篇...

    相比源码编译各版本之间遇到的坑来说,pip安装真心省事。不过由于项目需要采用C++实现的整个感知模块,只能把DL前向传播这块也写成C++形式。这是我去年的编译过程,当时有不少坑没能记录下来,以后有机会再往这篇文章中打补丁吧。

    Nivida显卡驱动安装

    首先不管采用那种安装方式,如果要跑GPU版本显卡驱动,CUDA,CUDNN这三样必须安装。

    先从官网nvidia.cn/下载与显卡匹配的驱动程序。

    1.控制台下编辑文件blacklist.conf

    sudo vim /etc/modprobe.d/blacklist.conf
    

    在文件最后插入以下内容:

    blacklist nouveau 
    options nouveau modeset=0 
    

    2.更新系统

    sudo update-initramfs -u 
    

    3.重启操作系统验证nouveau是否禁用,如果没有任何显示则表示nouveau已经被禁用

    lsmod | grep nouveau 
    

    v2-4850609b4111c0ae2c84756b2a6e5b94_b.png

    4.关闭图形界面,ctrl+alt+f1进入命令行

    sudo service lightdm stop
    

    5.安装驱动程序,例如我笔记本950M的显卡下了个NVIDIA-Linux-x86_64-430.40.run

    sudo ./NVIDIA-Linux-x86_64-430.40.run -no-x-check -no-opengl-files
    ------------------------------------------
    #-no-x-check:安装驱动时关闭 X 服务
    #-no-opengl-files:只安装驱动文件,不安装 OpenGL 文件
    

    6.验证驱动是否安装

    运行命令nvidia-smi检查驱动是否安装成功:

    v2-f7e1d1c62afc753ff5f4836fc655bd72_b.jpg

    CUDA和CUDNN安装

    网上看了其他人的博客安装方法和配套版本有很多种,在此我只记录下亲测过的版本CUDA9.2配套CUDNN7.1.4。CUDA9.2这个版本感觉挺坑的,网上现成的tensorflow安装包要不就基于CUDA-9.0,9.1要不就是CUDA-10.0编译的,导致后来用pip安装tensorflow1.12后,运行直接报错找不多cuda9.0的库,当然我们后面采用源码编译就不会出现这个问题了。

    1.下载CUDA和CUDNN安装文件

    登陆官网 developer.nvidia.com/cu,下载相应版本的安装文件,注意安装文件类型选择 runfile(local),我下载的是cuda_9.2.148_396.37_linux.run

    v2-71f42b65b37baaff8a6e19174614c15c_b.jpg

    2.禁用nouveau驱动,并关闭图形化界面

    此处操作在之前安装驱动程序的时候就做了,具体操作见上面。主要因为nouveau是 ubuntu16.04 默认安装的第三方开源驱动,安装cuda会跟nouveau冲突,需要先禁用。

    3.运行CUDA安装程序

    cd到runfile文件的路径下,执行以下命令

    sudo sh cuda_9.2.148_396.37_linux.run --no-x-check --no-opengl-files
    #开始安装,按提示一步步操作,按住回车看完声明。按照提示输入相应字符,不用安装驱动,其他根据内容yes。
    #安装结束后,重新启动图形化界面
    sudo service lightdm start
    

    4.设置环境变量

    sudo gedit ~/.bashrc
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.2/lib64
    export PATH=$PATH:/usr/local/cuda-9.2/bin
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.2
    

    通过nvcc -V验证CUDA Toolkit:

    v2-c7402ead0d21a5cfeca582388a61dd51_b.png

    5.编译CUDA提供的samples检查CUDA运行是否正常

    cd /home/chenwei/NVIDIA_CUDA-9.2_Samples
    make
    

    等待一段时间,编译 成功后,二进制文件会存放在 NVIDIA_CUDA-10.1_Samples/bin 中,执行下面的二进制文件,看是否成功

    cd /home/chenwei/NVIDIA_CUDA-9.2_Samples/bin/x86_64/linux/release
    ./deviceQuery
    

    v2-76d949bcdcc7972fe72e9baca8d65db3_b.jpg
    ./bandwidthTest
    

    若出现以下信息,则说明成功

    v2-e98c6cf788cf09a2ef96e5e8c1482b0a_b.jpg

    6.安装CUDNN

    登录官网developer.nvidia.com/rd下载与CUDA匹配的版本,我这里选择的是7.1.4。安装CUDNN的过程实际上是把CUDNN的头文件复制到CUDA的头文件目录里面去;把CUDNN的库复制到CUDA的库目录里面去。首先需要将下载的cudnn解压,之后再执行如下命令:

    # 复制cudnn头文件
    sudo cp cuda/include/* /usr/local/cuda-9.2/include/
    # 复制cudnn的库
    sudo cp cuda/lib64/* /usr/local/cuda-9.2/lib64/
    # 添加可执行权限
    sudo chmod +x /usr/local/cuda-9.2/include/cudnn.h
    sudo chmod +x /usr/local/cuda-9.2/lib64/libcudnn*
    

    7.检查CUDNN是否安装成功

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    

    出现如下则证明安装成功:

    v2-50b2658e1c0c80f075b0f487949756b5_b.png

    Bazel的安装

    ubuntu上安装Bazel有以下三种方式:

    • 二进制安装
    • 传统的APT仓库安装
    • 编译Bazel源码安装

    本次我采用的是二进制安装方式,流程如下:

    1.安装必须的程序

    首先安装JDK8,添加PPA源

    sudo add-apt-repository ppa:webupd8team/java    #添加PPA
    sudo apt-get update                             #更新
    sudo apt-get install openjdk-8-jdk              #安装java8
    

    安装完成后键入java -version

    若看到Java版本信息则表明JDK安装成功

    v2-0bec5828b9d299d4aeb51f9ffc1d433f_b.png

    安装依赖包pkg-config, zip, g++, zlib1g-dev, unzip, 和python

    sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python3
    

    2.下载Bazel安装文件

    从Bazel的GitHub的发布页面上下载命名格式为bazel-< version >-installer-linux-x86_64.sh的二进制安装文件。下载地址:github.com/bazelbuild/b 我下载是0.15.1版本。

    3.运行安装程序

    按照如下方式运行Bazel的安装程序

    chmod +x bazel-0.15.1-installer-linux-x86_64.sh
    ./bazel-0.15.1-installer-linux-x86_64.sh --user
    

    --user标记将Bazel安装到系统上的$HOME/bin目录,并将.bazelrc路径设置为$HOME/.bazelrc

    4.设置环境变量

    如果您像上一步中使用--user标记来运行Bazel安装程序,那么Bazel的可执行文件就被安装在你的$home/bin目录中了。

    sudo gedit ~/.bashrc,最后一行加上

    export PATH="$PATH:$HOME/bin"
    

    然后使之生效:source ~/.bashrc

    5.卸载Bazel

    当用户想卸载Bazel时,可做如下操作:

    rm -rf ~/.bazel
    rm -rf ~/bin
    rm -rf /usr/bin/bazel
    

    注释~/.bashrc 中bazel的环境变量

    编译Tensorflow

    CUDA环境和编译工具都安装成功后,接下来进入正题,源码编译Tensorflow。

    1.安装依赖项

    sudo apt-get install default-jdk python-dev python3-dev python-numpy python3-numpy build-essential python-pip python3-pip python-virtualenv swig python-wheel python3-wheel libcurl3-dev zip zlib1g-dev unzip 
    

    2.下载Tensorflow源码

    从github上下载tensorflow源码,我进行源码编译的版本是1.12.3

    git clone https://github.com/tensorflow/tensorflow
    cd tensorflow
    git checkout r1.12
    

    3.进行编译配置

    在用Bazel编译源代码之前,我们还需要在TensorFlow源代码路径下,运行configure文件,做一些必要的配置:

    chenwei@chenwei-HP-Pavilion-Gaming-Notebook:~/tensorflow$ ./configure 
    You have bazel 0.15.1 installed.
    Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3.5
    
    
    Found possible Python library paths:
      /usr/local/lib/python3.5/dist-packages
      /usr/lib/python3/dist-packages
    Please input the desired Python library path to use.  Default is [/usr/local/lib/python3.5/dist-packages]
    
    Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: n
    No jemalloc as malloc support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: n
    No Google Cloud Platform support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: n
    No Hadoop File System support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with Amazon S3 File System support? [Y/n]: n
    No Amazon S3 File System support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
    No XLA JIT support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with GDR support? [y/N]: n
    No GDR support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with VERBS support? [y/N]: n
    No VERBS support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
    No OpenCL SYCL support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with CUDA support? [y/N]: y
    CUDA support will be enabled for TensorFlow.
    
    Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 9.0]: 9.2
    
    
    Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-9.2
    
    
    Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7.0]: 7.1.4
    
    
    Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-9.2]:/usr/local/cuda
    
    Do you wish to build TensorFlow with TensorRT support? [y/N]: n
    No TensorRT support will be enabled for TensorFlow.
    
    Please specify the NCCL version you want to use. If NCCL 2.2 is not installed, then you can use version 1.3 that can be fetched automatically but it may have worse performance with multiple GPUs. [Default is 2.2]: 1.3
    
    Please specify a list of comma-separated Cuda compute capabilities you want to build with.
    You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
    Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 5.0]:
    
    Do you want to use clang as CUDA compiler? [y/N]: N
    nvcc will be used as CUDA compiler.
    
    Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: 
    
    Do you wish to build TensorFlow with MPI support? [y/N]: N
    No MPI support will be enabled for TensorFlow.
    
    Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 
    
    Add "--config=mkl" to your bazel command to build with MKL support.
    Please note that MKL on MacOS or windows is still not supported.
    If you would like to use a local MKL instead of downloading, please set the environment variable "TF_MKL_ROOT" every time before build.
    
    Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: N
    Not configuring the WORKSPACE for Android builds.
    
    Configuration finished
    

    其中因为我要配置成python3版本的tensorflow,所以python路径都用python3的。

    4.编译和安装

    bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/tensorflow_pkg 
    

    这个要花挺长的时间。编译完成后用pip3来安装tensorflow,

    sudo pip3 install ~/tensorflow_pkg/tensorflow-1.12.3-cp35-cp35m-linux_x86_64.whl
    

    注意因为前面编译的是python3版本的tensorflow,所以要将系统默认python版本切换为python3,否则安装时会报错说要安装的tensorflow不支持当前平台。

    5.测试

    控制台执行python3进入环境,输入以下代码:

    import tensorflow as tf
    print(tf.__version__)
    print(tf.__path__)
    a = tf.constant(1)
    b = tf.constant(2)
    sess = tf.Session()
    print(sess.run(a+b))
    

    如下图所示,则表明Tensorflow安装成功

    v2-130d96ce15fe4807f0e22a97427eb90e_b.jpg

    6.编译tensorflow的C++库文件

    # 生成tensorflow C++库
    bazel build --config=opt --config=cuda //tensorflow:libtensorflow_cc.so  #有显卡
    bazel build --config=opt  //tensorflow:libtensorflow_cc.so #无显卡
    

    编译需要等待较长时间,编译结束后,会产生bazel-bin、bazel-genfiles、bazel-out、bazel-tensorflow、bazel-testlogs五个文件夹,我们生成的两个so库在bazel-bin/tensorflow文件夹下libtensorflow_cc.so 和 libtensorflow_framework.so

    如果要生成C库或者lite本地库,命令如下:

    # 生成C库
    bazel build --config=opt --config=cuda //tensorflow:libtensorflow.so
    # 生成lite本地库
    bazel build --config=opt //tensorflow/lite:libtensorflowlite.so
    

    7.编译下载相关依赖文件

    执行依赖包的编译:

    cd tensorflow/contrib/makefile
    ./build_all_linux.sh
    

    该脚本会先调用download_dependencies.sh下载相关依赖文件

    8.环境配置

    把需要的.h头文件以及编译出来的.so动态链接库文件复制到指定的路径下:

    sudo mkdir /usr/local/include/tf
    sudo cp -r bazel-genfiles /usr/local/include/tf/
    sudo cp -r tensorflow /usr/local/include/tf/
    sudo cp -r third_party /usr/local/include/tf/
    sudo cp bazel-bin/tensorflow/libtensorflow_cc.so /usr/local/lib/
    sudo cp bazel-bin/tensorflow/libtensorflow_framework.so /usr/local/lib
    

    9.测试验证

    main.cpp:

    #include "tensorflow/cc/client/client_session.h"
    #include "tensorflow/cc/ops/standard_ops.h"
    #include "tensorflow/core/framework/tensor.h"
     
    int main() {
      using namespace tensorflow;
      using namespace tensorflow::ops;
      Scope root = Scope::NewRootScope();
      // Matrix A = [3 2; -1 0]
      auto A = Const(root, { {3.f, 2.f}, {-1.f, 0.f}});
      // Vector b = [3 5]
      auto b = Const(root, { {3.f, 5.f}});
      // v = Ab^T
      auto v = MatMul(root.WithOpName("v"), A, b, MatMul::TransposeB(true));
      std::vector<Tensor> outputs;
      ClientSession session(root);
      // Run and fetch v
      TF_CHECK_OK(session.Run({v}, &outputs));
      // Expect outputs[0] == [19; -3]
      LOG(INFO) << outputs[0].matrix<float>();
      return 0;
    }
    

    cmakelist:

    cmake_minimum_required (VERSION 3.9)
    project (tf_test)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")
    set(TENSORFLOW_LIBS
            /usr/local/lib/libtensorflow_cc.so
            /usr/local/lib/libtensorflow_framework.so
    )
    include_directories(
            /usr/local/include/tf
            /usr/local/include/tf/bazel-genfiles
            /usr/local/include/tf/tensorflow
            /usr/local/include/tf/third-party
            /usr/local/include/eigen3
    )
    add_executable(tf_test  main.cpp)
    target_link_libraries(tf_test
            ${TENSORFLOW_LIBS}
    )
    

    运行结果:

    v2-95a8933cb858339f7ddc347823f20829_b.png


    编译问题汇总

    1.报icu相关错误

    tensorflow/core/kernel/BUILD:6589:1 no such package '@icu//': java.io.IOException
    

    编译源码时会下载release-62-1.tar.gz文件,由于网络原因会下载失败,建议下载文件到本地利用本地的http服务来处理,具体操作如下:

    # 1、安装
    sudo apt-get install httpd #这一句之后会提示有很多个,从中选一个来安装
    sudo apt-get install apache2
    sudo apt-get install apache2-dev
    # 2、可以查看是否成功
    sudo systemctl status apache2
    

    下载codeload.github.com/uni文件,然后放到/var/www/html/目录下,

    "http://localhost/release-62-1.tar.gz"
    

    然后修改tensorflow/third_party/icu/workspace.bzl文件,添加

    """Loads a lightweight subset of the ICU library for Unicode processing."""
    
    load("//third_party:repo.bzl", "third_party_http_archive")
    
    def repo():
        third_party_http_archive(
            name = "icu",
            strip_prefix = "icu-release-62-1",
            sha256 = "e15ffd84606323cbad5515bf9ecdf8061cc3bf80fb883b9e6aa162e485aa9761",
            urls = [
    	    "http://localhost/release-62-1.tar.gz"
                "https://mirror.bazel.build/github.com/unicode-org/icu/archive/release-62-1.tar.gz",
                "https://github.com/unicode-org/icu/archive/release-62-1.tar.gz",
            ],
            build_file = "//third_party/icu:BUILD.bazel",
        )
    

    2.报压缩格式有误

    C++库编译完成后,使用前需要安装一些tensorflow的依赖库,如下在执行脚本download_dependencies.sh时报压缩包没有用gzip格式压缩

    chenwei@chenwei-HP-Pavilion-Gaming-Notebook:~/tensorflow$ ./tensorflow/contrib/makefile/download_dependencies.sh 
    downloading https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz
    gzip: stdin: not in gzip format
    tar: Child returned status 1
    tar: Error is not recoverable: exiting now
    

    通常有两种解决方法,第一种是解压时不用加入z指令tar -xvf ****,第二种是把下载的文件重命名。

    解决方法:

    1.分别下载相应文件并解压,下载的文件名如下:

    eigen,gemmlowp,googletest,nsync,protobuf,re2,fft2d,double_conversion,absl,cub

    下载地址,可在.tensorflow/tensorflow/workspace.bzl文件中查询并下载,并且只能按照这个文件中的版本地址进行下载。

    2.将下载的文件解压后并按照download_dependencies.sh中的要求进行命名,

    v2-0a8e24a1fc7e1683360b8ec16e10dd99_b.jpg

    统一存放在下面文件夹中:

    tensorflow/tensorflow/contrib/makefile/downloads

    3.编辑build_all_linux.sh文件,注释掉30、33行,不然会自动删除第六步中已下载好的文件,注释如下所示:

    v2-80962fe998ef1bb4da608831e2e0ab44_b.jpg

    4.再次编译:./build_all_linux.sh,编译完成后,会生成一个gen文件夹。

    3.nvcc fatal

    源码编译时报:Unsupported gpu architecture 'compute_75'。由于在配置显卡能力的时候默认是75未做修改,猜测是cuda9.2不支持compute_75。

    解决方法:

    1. ./configure配置的时候修改成nvccn能力6.1

    2. 再次编译,问题解决

    4.bfloat16_lib failed

    v2-2177e707c5dd0b1c32c89dc19c405693_b.jpg

    网上有人说是numpy版本不能大于1.19.0,我测试了下先卸载sudo pip3 uninstall numpy,再安装小于1.19的版本sudo pip3 install 'numpy<1.19.0' 但是问题仍然存在。

    解决方法:

    由于我自己笔记本上编译为报这个错误,所以对比了下可能和python版本有关,当前是python3.6,卸载后使用ubuntu自带的python3.5再次编译即可通过。

    5. 缺少依赖包

    这个问题是由于之前的很多依赖是安装在python3.6上,卸载后切换到python3.5编译tensorflow时,很多依赖包需要重新安装。

    v2-015b5b055335b723d7f59c500da64606_b.png

    v2-85d93db3ee781c2cc37f5005ca73f8d8_b.png

    解决方法:

    1. 安装keras_applications

    sudo pip3 install keras_applications

    2. 安装keras_preprocessing

    sudo pip3 install keras_preprocessing

    3.再次安装,问题解决

    6.报错 RuntimeError: Python version >= 3.6 required

    v2-aa752a97dfb3f020f1334423e51610f0_b.png

    解决方法:

    1.更新setuptools

    sudo pip3 install --upgrade setuptools -i mirrors.aliyun.com/pypi

    2.更新pip

    sudo python3 -m pip install --upgrade pip -i mirrors.aliyun.com/pypi

    3.再次安装,问题解决

    7. ./autogen.sh: 4: ./autogen.sh: autoreconf: not found

    编译过程中出现autoreconf找不到的问题

    解决方法:

    1. 安装相关的包

    sudo apt-get install autoconf

    sudo apt-get install automake

    sudo apt-get install libtool

    2.再次安装,问题解决

    8. C++编译TF相关工程时报Eigen文件找不到

    v2-29857fea68b423569f5a7eee3dc79318_b.png

    解决方法:

    1. cd到tensorflow/contrib/makefile/downloads/eigen文件夹下,执行以下命令:
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    

    在usr/local/include目录下会出现eigen3文件夹。

    2.重新编译即可。

    展开全文
  • 课程讲述如何调试TensorFlow底层的...最后,我们以一个TensorFlow底层实现的自定义卷积来讲述如何对TensorFlow进行源代码修改。如果你打算修改TensorFlow,并且没有相关经验,本期课程可以节省您几周甚至数月的时间。
  • TensorFlow 源代码 调试 与 修改 VScode

    千次阅读 2020-05-06 11:19:55
    如何调试与修改TensorFlow源代码 TensorFlow是目前使用最广泛的深度学习框架,网上关于如何进行TensorFlow编程的教程或者博客比比皆是。然而,对于那些希望了解TensorFlow内部如何实现,或者是希望自定义修改...

    TensorFlow是目前使用最广泛的深度学习框架,网上关于如何进行TensorFlow编程的教程或者博客比比皆是。然而,对于那些希望了解TensorFlow内部如何实现,或者是希望自定义修改TensorFlow内核的朋友来说,搜索相关的内容却很难找到有帮助的教程或者博客,不论是中文还是外文。笔者去年花费好几个月对如何调试TensorFlow源代码,再到如何修改TensorFlow内核C++库文件,最后自定义TensorFlow内部的Tensor形状以及卷积模式,较熟悉如何进行TensorFlow的源代码调试与修改。本文将介绍如何对TensorFlow进行调试,进而便于有需要的朋友进行内核(C++)的学习与修改。
    网上有少许关于如何调试TensorFlow源代码的文章,有的推荐直接用gdb,有的推荐用Emacs+gdb,有的推荐用codeblock的,笔者通过实验发现VS code是可视化做的最好的,而且用户界面友好,调试不会出现卡顿。Emacs在调试时随着追踪的深入会卡顿;而单纯用gdb…可能适合于linux大佬;codeblock用户界面不及VS code,而且笔者尝试调试没有成功…。

    一:准备工作:

    1. 首先安装VS code,python,gcc,bazel等必要库。
    2. 然后git下载TensorFlow的源代码并check out出自己需要的版本。对源代码进行configure,根据是否有GPU而进行相应选择。这里需要注意:TensorFlow的版本必须要和本机的python,gcc,bazel版本相匹配,建议提前想好再安装所有库文件。
    3. 在configure源文件之后,我们需要用bazel对TensorFlow源代码进行编译。以CPU为例,编译命令为:bazel build --spawn_strategy=standalone --verbose_failures --local_resources 11048,2.0,2.0 -c dbg --copt -g //tensorflow/tools/pip_package:build_pip_package

    二:代码调试:

    1. 打开VS code并打开TensorFlow源代码根目录。然后在根目录创建.vscode文件夹。然后创建launch.json文件。文件内容如下:
      在这里插入图片描述其中的program:选项代表的是你所要调试的文件,这里我们选择TensorFlow自带的conv_ops_test文件。
    2. 任务完成,现在就可以到conv_ops_test.cc文件当中设置断点并开始追踪啦。

    二:代码修改:

    1. 对于希望修改TensorFlow源代码的朋友,因为已经知道如何调试了,剩下的就是在自己希望修改的地方添加断点,然后追踪代码,进而修改并查看修改后对相应操作(卷积,池化等等)的影响。TensorFlow内部C++代码量很大,核心内容主要在core/kernel目录下,定义了前向传播与反向传播的相关函数。此外,在core/kernel目录下,TensorFlow同时定义了一些测试函数,比如对特定的卷积与池化的测试函数等等,我们也可以通过修改相应的测试函数来对修改后的代码进行测试。由于TensorFlow多数很多底层的矩阵操作都是调用第三方库文件的,所以需要引入第三方库文件的源码才能进行部分自定义功能的实现。
    2. 对于希望添加自定义OP的朋友,可以选择在TensorFlow现有的基础上添加自定义OP,官网上有相应教程。我个人更推荐基于TensorFlow提供的examples进行修改,这样就不用自己定义一系列麻烦操作。

    三:更多内容:
    为了方便需要理解TensorFlow内核,以及希望自定义OP或者修改TensorFlow源代码的朋友,我录制了一期在线课程,课程中除了讲述如何调试源代码,同时还涵盖了如何自定义TensorFlow当中的卷积操作(基于Eigen library)。课程不会讲解TensorFlow各个模块都做什么的概念性介绍,而是以具体的实例讲解如何调试,如何修改源代码。
    自己花费了很多时间来学习如何对TensorFlow源代码进行调试与修改,课程中也会附带自己遇到的问题以及解决方法的笔记,如何你想修改TensorFlow源代码,相信可以节省几周甚至几个月的探索时间:https://edu.csdn.net/course/detail/28880

    展开全文
  • 4.4.TensorFlow C++版开发库编译 4.4.1. release编译 4.4.1.1. 编译tensorflow_cc.dll bazel build --config=opt --define=no_tensorflow_py_deps=true --copt=-DTHRUST_IGNORE_CUB_VERSION_CHECK --copt=-nvcc_...
  • bazel编译tensorflow源码

    千次阅读 2021-05-08 19:28:35
    在安装完tensorflow CPU版本后,经常看到如下的警告,该警告虽说可以通过一些python语句来忽略(忽略方法),但总有点眼不见为净的感觉。 Your CPU supports instructions that this TensorFlow binary was not ...
  • Win10系统下从tensorflow源码编译tensorflow-gpu 1.15

    千次阅读 热门讨论 2020-03-16 14:49:27
    tensorflow-gpu 1.15支持CUDA10,所以需要从 NVIDIA 官网下载CUDA10.0,安装一路选择默认就行 二、CUDNN安装 tensorflow-gpu 1.15支持CUDNN v7,所以需要从 NVIDIA 官网下载CUDNN v7,将下载的CUDNN解压,复制解压...
  • tensorflow源码编译tensorflowlite.so

    千次阅读 2020-03-09 13:44:23
    在android端通过C++调用tflite,不直接通过java调用,这时...1.下载tensorflow源码 git clonehttps://github.com/tensorflow/tensorflow.git 注意版本,为了与模型使用的代码相匹配,我使用的是tensorflow=r1.13 ...
  • Tensorflow c++源码编译(踩坑版)

    千次阅读 2021-12-14 12:02:21
    在实际项目部署过程中,会需要tensorflow c或者c++版本, 网上一通查,说自己编译会各种坑,投机取巧。。在拿到别人编译好的c和c++版本调用报错后,开始痛定思痛,躲不过的坑 自己来趟好了。。 先说下电脑环境: ...
  • win10下Bazel编译tensorflow源码并用c++接口调用tensorflow模型超详细教程
  • 源码安装tensorflow

    千次阅读 2018-09-15 18:06:12
    最近在用源码安装tensorflow,因为编译的问题踩了好多坑,所以特意整理出该文,以便日后查看。文中绿色字体部分是终端输入过的命令;红色字体是告警信息。 一、准备工作 准备工作有: 1、ubuntu 14.04操作系统...
  • 最近两天重装了PC系统,时间也比较多,正好试试在Windows系统上编译TensorFlow源码。我想尝试编译最新的TensorFlow 2.4.1,搭配CUDA 11.2和cuDNN 8.1,看看在最新的版本下编译会不会出现问题。安照官方的教程走一遍...
  • 之前说了在Tensorflow源码研究的时候需要遵守的一些原则,这些原则是对不熟悉的内容进行操作的时候都应该遵守的。 接下来将继续回归正题。我当前的目标是找到tf框架中对Relu函数求偏导的代码所在,借此来理解tf底层...
  • 最近在研究如何用tensorflow的python库训练模型,生成pb文件,再在c++中调用这个模型,完成前向的预测。 具体步骤如下: ①在python中,用tensorflow的python库,训练模型,并生成pb文件; ②准备好tensorflow的...
  • ubuntu--bazel编译tensorflow源码

    千次阅读 热门讨论 2020-03-26 21:06:51
    bazel编译tensorflow源码 1. 配置 2. 理想安装过程 2.1 安装bazel 2.2 安装gcc和g++ 2.3根据源码安装tensorflow-r1.13 3. 开始编译 4. 踩坑记录 4.1 gcc版本版本过高, 或者gcc和g++版本不一致 4.2 清除bazel缓存 4.3...
  • TensorFlow源码基本也是按照框架分层来组织文件的。如下 其中core为tf的核心,它的源码结构如下 5 总结 TensorFlow框架设计精巧,代码量也很大,我们可以从以下部分逐步学习 TensorFlow内核架构和源码...
  • DCGAN及其TensorFlow源码

    万次阅读 多人点赞 2017-06-06 22:25:23
    DCGAN及其源码
  • Ubuntu编译Tensorflow源码支持CUDA

    千次阅读 2017-06-25 20:52:44
    我在后续支持Tensorflow更新版本的时候重新编译Tensorflow源码的时候Tensorflow对CUDA支持更高,于是且在cuda的时候很容易卸载一些其他和cuda相关的库导致无法进入图形界面。当然个问题现在很容易解决,但是对于...
  • 只需在我的演示代码中修改卷积层即可。 请参阅查看此存储库的演示。 要在此演示中使用VGG网络,必须下载VGG16 NPY的npy文件。 要使用ResNet-v1-50或ResNet-v1-101,请从下载权重 欢迎任何贡献 [原论文] Grad-CAM...
  • Ubuntu Tensorflow源码安装

    千次阅读 2018-11-07 19:06:21
    =VMWare+Ubuntu+Tensorflow=== VMWare + Ubuntu16.0.4 VMWare Player不支持GPU,只能安装CPU版本 自带-Python2.7.12 Bazel如下0.18-1 Tensorflow-master1.12 (2018/11/06下载) ...
  • 1. 环境 (1)vs2015 (2)Swigwin,下载链接:http://swig.org/download.html (3)python3.5 (4) CMake (5)Eigen,下载链接:...(5)git:将安装路径添加环境变量;...(6)Tensorflow源码,下载链接:https:/...
  • TensorFlow 2.0源码编译步骤

    千次阅读 2020-02-03 18:08:53
    TensorFlow 2.0源码编译步骤传统pip安装tensorflow限制修改bazel编译版本限制已知编译存在的问题配置configure编译选项Tips: 本文作者:Phillweston,未经允许禁止转载 传统pip安装tensorflow限制 1.AVX指令集CPU...
  • 基于TensorFlow的VGG16模型源码

    千次阅读 2020-03-07 13:41:42
    我看了网上的一些源码程序,自己下载跑一哈,发现有很多的错误,不知道是我电脑原因,还是tensorflow版本问题,我自己基于别人的源码修改了一些细节,使程序可以顺利运行 imagenet_classes.py # -*- coding: utf-...
  • 满意答案 每天都补处女膜 2013.11.16 采纳率:49% 等级:11 已帮助:172...3、配置tensorflow 如果tensorflow是使用whl文件安装,需要下载源码进行配置,官网推荐下载地址Tensorflow 或者使用命令下载 展开 00分享举报
  • 1.ubuntu16.04上编译安装TensorFlow&Sonnet
  • FCN Tensorflow源码阅读注释和总结

    千次阅读 2019-01-24 16:21:08
    为了直观的从头到尾捋一遍代码和tensorflow语法,所以把 tensorflowUtils.py 文件中的大多和tensorflow相关的辅助函数在 FCN.py 中重新实现了一遍。   FCN 优点: 可以输入任意大小的图像; 全卷积代替全连接,...
  • DeepLab v3 tensorflow 源码

    千次阅读 2018-05-18 16:34:59
    DeepLab v3 tensorflow 源码 标签(空格分隔): tensorflow 源码 import tensorflow as tf from config import * import resnet_utils from resnet_v1 import bottleneck, resnet_arg_scope slim = tf....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,472
精华内容 3,388
关键字:

修改tensorflow源码