将ViT模型从PyTorch导入TensorFlow

一、Anaconda 安装

无论是cpu版本还是gpu版本,都建议先安装Anaconda,在该环境下安装

见博客 Anaconda 与 Pycharm 间的安装和链接

二、安装 TensorFlow-CPU

1、配置环境

打开 Anaconda Prompt(直接电脑左下角搜索)

登录后复制

# 1.查看有哪些可安装的python版本
conda search --full-name python
# 2.创建新环境
conda create --name tensorflow python=3.6.2
# 如果想删除环境采用以下操作
# conda remove -n your_env_name(虚拟环境名称) --all

pytorch导入VIT pytorch导入tensorflow_pytorch导入VIT

中间可能会因为网络问题中断,可以重试几次

根据提示,进行激活

登录后复制

# 3.激活
activate tensorflow
# 4.查看是否成功
conda info --envs

pytorch导入VIT pytorch导入tensorflow_tensorflow_02

3.4.两步可以用于以后想要切换环境的时候。

发现环境激活成功,查看版本,python版本已经成为3.6.2

pytorch导入VIT pytorch导入tensorflow_cuda_03

2、安装 Tensorflow

(依次运行命令)

登录后复制


# 1.安装
pip install tensorflow
# 2.在python中导入包(如果没报错说明安装成功)
import tensorflow as tf

pytorch导入VIT pytorch导入tensorflow_tensorflow_04

三、安装TensorFlow-GPU

  • Windows 10 64bit 家庭中文版版
  • GPU: GeForce GTX 1050 Ti
  • Python: 3.6.2
  • 显卡驱动:471.68
  • CUDA: CUDA Toolkit 11.4
  • cuDNN: cuDNN v8.2.2

1、是否可安装GPU版Tensorflow

查看自己的电脑是否可以安装GPU版本。

1)方法一:查看算力

打开 系统 - 设备管理器 - 显示适配器【可以直接左下角搜索设备管理器】

pytorch导入VIT pytorch导入tensorflow_python_05

【想跑深度学习建议购买NVDIA(英伟达)的显卡而不是AMD】

接下来查看电脑显卡型号是否支持CUDN【一般需要计算能力>3.5】

官方版本和算力查看链接: https://developer.nvidia.com/zh-cn/cuda-gpus

查看自己的产品和对应版本的算力,如我的算力为 6.1

pytorch导入VIT pytorch导入tensorflow_tensorflow_06

pytorch导入VIT pytorch导入tensorflow_tensorflow_07

pytorch导入VIT pytorch导入tensorflow_python_08

(2)方法二:Google搜索

用谷歌搜索“GPU型号+SPECIFICATION”,在官网查它是否支持CUDA

2、安装显卡驱动

官方驱动链接:https://www.nvidia.com/Download/index.aspx?lang=en-us

  • 到该网址搜索适合自己型号的驱动并下载

【注意GTX不一定在GTX系列里,如我的GTX 1050 Ti 是在GeForce 10 Series中。】

pytorch导入VIT pytorch导入tensorflow_tensorflow_09

下载界面

pytorch导入VIT pytorch导入tensorflow_CUDA_10

  • 安装完成后可以重启一下电脑
  • 顺便看一下自己的版本,我的是471.68

pytorch导入VIT pytorch导入tensorflow_CUDA_11

3、创建虚拟环境

与cpu安装类似,我们新建一个虚拟环境

登录后复制


# 1.查看有哪些可安装的python版本
# conda search --full-name python
# 2.创建新环境
conda create --name tensorflow-gpu python=3.6.2
# 如果想删除环境采用以下操作
# conda remove -n your_env_name(虚拟环境名称) --all
# 3.激活
activate tensorflow-gpu
# 4.查看是否成功
conda info --envs

4、安装Tensorflow、CUDA、cuDNN

(1)CUDA版本选择

  • 方法一

CUDA的版本依赖于显卡的驱动程序版本

官方参考链接:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

pytorch导入VIT pytorch导入tensorflow_CUDA_12

前面提到我的驱动版本是471.68,因此可以安装CUDA 11.4

  • 方法二

安装完NVDIA后,打开NVIDIA控制面板→帮助→系统信息→组件,发现最高支持11.4的CUDA,和方法一的结果一致

pytorch导入VIT pytorch导入tensorflow_cuda_13

(2)cuDNN、TensorFlow 版本选择

官方参考链接:https://tensorflow.google.cn/install/source_windows#gpu

到官方查看。对应CUDA 11,发现可以安装cuDNN 8和 tensorflow_gpu-2.4.0

pytorch导入VIT pytorch导入tensorflow_CUDA_14

(3)方法一:安装包安装

  • CUDA下载链接:https://developer.nvidia.com/cuda-toolkit-archive
  • 选择对应版本

pytorch导入VIT pytorch导入tensorflow_tensorflow_15

  • 在环境变量中加入以下几个路径
  • 登录后复制
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib\x64

  • 测试是否安装完成
  • 登录后复制
# 控制台输入
nvcc -V

pytorch导入VIT pytorch导入tensorflow_python_16

有信息弹出说明安装完成,版本为v11.4

  • cuDNN下载链接:https://developer.nvidia.com/zh-cn/cudnn
  • cuDNN下载需要进行登录

pytorch导入VIT pytorch导入tensorflow_CUDA_17

  • 解压刚下载的cuDNN压缩包并复制文件

下载的压缩包里有如下内容,解压得到

pytorch导入VIT pytorch导入tensorflow_CUDA_18

复制到CUDA的安装目录(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4)下。

pytorch导入VIT pytorch导入tensorflow_pytorch导入VIT_19

  • 安装Tensorflow
  • 登录后复制
pip install tensorflow-gpu==2.4.0

pytorch导入VIT pytorch导入tensorflow_python_20

(3)方法二:conda 安装(未尝试)

登录后复制


# 在tensorflow-gpu的虚拟环境中安装
# 1.安装CUDA
conda install cudatoolkit==11.4.1
# 2.安装cuDNN
conda install cudnn==8.0
# 3.安装TensorFlow
pip install tensorflow-gpu==2.4.0

参考链接:2021年Windows下安装GPU版本的Tensorflow和Pytorch

5、测试

登录后复制


# 进入python
import tensorflow as tf
print(tf.test.is_gpu_available())

若输出true说明gpu版tensorflow安装成功

【如果报错,比如缺失某dll文件,或者Cannot dlopen some GPU libraries,见 解决:运行 tensorflow-gpu相关代码报错/缺少dll文件(无需修改tensorflow版本)】

pytorch导入VIT pytorch导入tensorflow_CUDA_21

四、安装 Pytorch

  • 除了pytorch,还有一个很好用的包是torchvision,用于图像相关的功能
  • torch和torchvision的版本对应关系如下链接
    https://github.com/pytorch/vision
  • 到该链接找到可用的torch和torchvision版本

https://download.pytorch.org/whl/torch_stable.html

pytorch导入VIT pytorch导入tensorflow_cuda_22


pytorch导入VIT pytorch导入tensorflow_cuda_23

  • cu110即cuda11.0版本,cp36即python3.6版本,下载与自己需求对应的whl文件
  • 由于torch是1.7.1,所以torchvision使用0.8.2
  • 安装并运行
  • 登录后复制
# 1.创建新环境
conda create --name torch-gpu python=3.6.2
# 2.查看是否成功
conda info --envs
# 3.激活
activate torch-gpu
# 4.安装torch
pip install torch-1.7.1+cu110-cp36-cp36m-win_amd64.whl
# 使用镜像
# pip install xx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# pip install D:\SoftWare\Anaconda3\torch-1.7.1+cu110-cp36-cp36m-win_amd64.whl
# conda install pytorch torchvision torchaudio cudatoolkit=11.4 -c pytorch -c conda-forge
# 5.安装torchvision
pip install torchvision-0.8.2+cpu-cp36-cp36m-win_amd64.whl





登录后复制
# 5.进入python测试
import torch
print(torch.cuda.is_available())

pytorch导入VIT pytorch导入tensorflow_CUDA_24

这里可能出现两个报错,附上解决链接【该链接含其他镜像的链接】

Could not find a version that satisfies the requirement xxx(from versions: ) 和 PermissionError: [Errno 13] Permission denied

参考链接:

cuda pytorch torchvision版本对应问题

五、测试

1、测试代码

官方快速入门教程:初学者的 TensorFlow 2.0 教程

在python中运行以下代码

登录后复制


# 导入tensorflow
# 这里如果报错 Could not load dynamic library 'cudart64_110.dll',见问题小结
import spicy
import tensorflow as tf
# 准备数据集和数据处理
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# 搭建模型
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
# 选择优化器和损失函数
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
# 训练并验证
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

pytorch导入VIT pytorch导入tensorflow_CUDA_25

2、查看显卡利用率

登录后复制


# 简单查看
nvidia-smi
# 每2秒刷新
nvidia-smi -l 1

pytorch导入VIT pytorch导入tensorflow_pytorch导入VIT_26

六、问题小结

1、pip 时 ‘utf-8’ codec can’t decode byte

在 pip install imread 的过程中遇到了这个问题

登录后复制


UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 13: invalid start byte

解决方案见 解决:‘utf-8’ codec can’t decode byte(本质是from scipy.misc import imread问题)

2、导入 tensorflow 时报错 Could not load dynamic library ‘cudart64_110.dll’

在运行 import tensorflow 报了以下错误

登录后复制


2021-08-20 10:30:43.560405: W 
tensorflow/stream_executor/platform/default/dso_loader.cc:64] 
Could not load dynamic library 'cudart64_110.dll'; 
dlerror: cudart64_110.dll not found

解决方案见 解决: 导入tensorflow时报错 Could not load dynamic library ‘cudart64_110.dll‘

3、运行 tensorflow-gpu相关代码报错/缺少dll文件

有以下的错误提示

登录后复制


2021-08-20 12:44:12.846291: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 
Could not load dynamic library 'cusolver64_10.dll'; 
dlerror: cusolver64_10.dll not found

2021-08-20 12:42:42.534915: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] 
Cannot dlopen some GPU libraries. 
Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. 
Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...

解决方案见 解决:运行 tensorflow-gpu相关代码报错/缺少dll文件(无需修改tensorflow版本)


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空