深度学习01-tensorflow开发环境搭建

news2024/11/20 22:39:35

文章目录

  • 简介
  • 运行硬件
  • cuda和cuddn
  • tensorflow安装。
    • 安装Anaconda
    • 创建python环境
    • 安装tensorflow-gpu
    • pycharm配置
      • 配置conda环境
      • 配置juypternotebook
    • 安装cuda
    • 安装cudnn

简介

TensorFlow是一种端到端开源机器学习平台,它提供了一个全面而灵活的生态系统,包含各种工具、库和社区资源,能够助力研究人员推动先进机器学习技术的发展。在TensorFlow机器学习框架下,开发者能够轻松地构建和部署由机器学习提供支持的应用。[2]

Keras是一个高层次神经网络 API,适用于快速构建原型、高级研究和生产。它作为TensorFlow的一个接口,可以兼容多种深度学习框架。Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。 Keras最开始是为研究人员开发的,其目的在于快速实验,具有相同的代码可以在CPU或GPU上无缝切换运行的特点,同时也具有用户友好的API,方便快速地开发深度学习模型的原型。
Keras使用类sklearn的api接口来调用tensorflow,从sklearn机器学习中切换过来,更加容易上手。
Tenforflow2.0后直接内置可keras。

运行硬件

TensorFlow支持在CPU和GPU上运行。GPU(图形处理单元)是一种专门用于加速计算的硬件,它可以大大提高深度学习模型的训练速度。相对而言,CPU(中央处理器)的每个核心具有更强大的处理能力,但它们的数量通常非常有限,因此在处理大数据时它们表现不佳。

TensorFlow GPU和CPU的主要区别在于如何使用硬件来处理计算任务,以及处理速度的差异。在CPU上,TensorFlow利用所有可用的CPU内核并将任务分配给它们,这可能需要几分钟或几小时来完成。在GPU上,TensorFlow使用CUDA(Compute Unified Device Architecture)技术来利用GPU进行并行计算并加速训练过程,因为GPU拥有数百到数千个小型核心,这比CPU的几十个核心要多得多。这使得TensorFlow能够在GPU上实现更快的训练速度和更高的吞吐量,尤其是在处理大规模的深度学习任务时。

另外需要注意的是,如果你的计算机没有安装专门的GPU,则无法使用TensorFlow GPU。在这种情况下,TensorFlow会使用CPU作为默认选项,但是训练过程会比在GPU上慢得多。因此,如果你需要进行大量的深度学习训练任务,建议使用具有至少一张GPU的计算机来加速训练。

总之,TensorFlow GPU和CPU之间的区别在于它们的硬件架构、并行计算能力以及处理速度等方面。当进行大规模的深度学习训练时,使用GPU可以显著提高训练速度和吞吐量,而对于较小的任务或者没有专门GPU的计算机,则应该使用CPU。

cuda和cuddn

CUDA(Compute Unified Device Architecture)是一种由NVIDIA公司开发的并行计算平台和编程模型,它允许开发人员使用标准C/C++语言编写基于GPU的高性能应用程序。CUDA包括一个可编程的内核语言(CUDA C/C++),一个并行计算库(CUDA Toolkit),以及驱动程序和硬件架构,支持对NVIDIA GPU进行高性能并行计算。与CPU相比,GPU在并行处理任务时的性能要高得多,因此CUDA被广泛用于深度学习、科学计算和高性能计算等领域。[2]

cuDNN(CUDA Deep Neural Network library)是NVIDIA CUDA的一个加速库,它提供了一组高度优化的本地函数,用于加速深度神经网络模型的训练和推理。cuDNN主要用于卷积神经网络(CNNs)和递归神经网络(RNNs)等深度学习模型的优化,从而实现更快的训练和推理速度。cuDNN支持多种深度学习框架,包括TensorFlow,PyTorch和Caffe等。[1]

因此,CUDA是一种GPU计算平台和编程模型,cuDNN是其中一个加速库,专门用于加速深度学习模型的训练和推理。这两个技术结合起来,可以实现对GPU的高性能并行计算和深度学习模型的优化,从而提高深度学习任务的整体性能。

不同的tensorflow版本需要不同的cuda和cuddn版本,google官网可查看
https://tensorflow.google.cn/install/source_windows?hl=en
在这里插入图片描述

如果电脑有gpu建议安装tensorflow-gpu,如果电脑没有gpu安装性能较差的tensorflow

打开任务管理器-性能,查看你是否支持gpu
在这里插入图片描述
从这里我们可以看到我的cpu是英伟达(nvidia)的gtx1050
如果电脑已经安装显卡驱动,cuda肯定是自带的,我们可以使用nvidia-smi命令查看
在这里插入图片描述

tensorflow安装。

安装Anaconda

首先我们安装Anaconda,教程参考:
打开命令行
在这里插入图片描述

创建python环境

在其他盘创建一个环境,假设使用python3.7版本

conda create --prefix=d:\condaenv\env_name python=3.7 

切换

activate d:\condaenv\env_name
(d:\condaenv\env_name) C:\Users\liaomin>python --version
Python 3.7.4

安装tensorflow-gpu

通过版本关系图
在这里插入图片描述
可以确定我们可以使用python3.7版本安装tensorflow-gpu 2.0.0以上所有版本,我们选择一个2.6.0

#设置镜像源
conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
#安装tensorflow-gpu
conda install tensorflow-gpu==2.6.0

安装完成我们先不急着安装cuddn和cuda可以先写个helloworld测试下

pycharm配置

配置conda环境

创建一个项目pure python项目,点击project interpreter 选择Existing interpreter,点击右侧的…
在这里插入图片描述
选择conda environment
在这里插入图片描述
然后点击ok 在interpreter下拉框中选择刚新建的那个

在这里插入图片描述
编写一段helloworld代码

import tensorflow as tf

# 创建一个常量张量
x = tf.constant([1, 2, 3])

# 创建一个变量张量
y = tf.Variable([3, 2, 1])

# 计算两个张量的和
z = tf.add(x, y)

# 输出结果
print(z.numpy())

运行,虽然能输出结果[4 4 4],但是有红色警告

2023-05-06 16:43:35.610912: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
#下面这段是安装好cuda后报的错。
2023-05-06 17:37:38.727999: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found
2023-05-06 17:37:38.728345: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1835] 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...
2023-05-06 17:37:38.729310: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.

显然缺少cuda和cudnn,注意这里缺少cudart64_110.dll并不是说cuda就是110版本,实际你11.2安装后也是这个dll。

配置juypternotebook

打开anaconda prompt,并且激活你新穿件的环境,安装jupyter

conda install jupyter notebook

在pycharm中右键创建一个notebook
在这里插入图片描述
输入之前的helloword代码,选择运行或者调试
在这里插入图片描述
右侧输出结果

安装cuda

通过版本关系图,我们知道tensorflow-gpu 2.6.0需要安装11.2的cuda
在这里插入图片描述
cuda历史版本下载位置,下载对应版本安装
这里有三个版本选择最高的11.2.2
在这里插入图片描述
点击进入后 选择window版本
在这里插入图片描述
默认安装路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
打开电脑设置——>系统——>系统高级设置——>环境变量——>系统变量——>PATH
将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin加入到环境变量PATH中
在这里插入图片描述
cmd重新执行nvidia-smi,发现版本更新了
在这里插入图片描述
发现之前缺失的cudart64_110.dll确实在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
在这里插入图片描述

安装cudnn

通过版本关系图,我们知道tensorflow-gpu 2.6.0需要安装8.1的cudnn
在这里插入图片描述
cudnn历史版本下载位置,下载对应版本8.1,下载cudnn需要注册nvidia
在这里插入图片描述

选择cudnn library for window(x86)点击下载
打开cudnn文件夹
在这里插入图片描述
将上述cudnn里面的文件移动或copy到cuda对应文件夹目录下即可!
在这里插入图片描述

此时在运行helloworld程序使用gpu正常运行

2023-05-06 19:01:23.403530: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-05-06 19:01:24.075663: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1320 MB memory:  -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1
[4 4 4]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity进阶学习笔记:有限状态机

一般来说,每一个游戏物体会有多种状态,每一个状态会对应一个特定动画。如一个游戏角色可能有静止状态,移动状态,攻击状态。每一个状态里都有对应的动画。如果我们只是简单使用一个个if语句判断玩家进行哪个控制来切换动画会让程序…

一文打尽目标检测NMS(2): 效率提升篇

文章来自于:曲終人不散丶知乎, 连接:https://zhuanlan.zhihu.com/p/157900024, 本文仅用于学术分享,如有侵权,前联系后台做删文处理。 在笔者上一篇文章《一文打尽目标检测NMS——精度提升篇》中&#xff0…

博客系统后端设计(三) - 实现获取博客列表页功能

文章目录 实现获取博客列表页功能1. 约定前后端交互接口2. 实现后端代码3. 实现前端代码4. 测试代码5. 涉及到的两个 Bug 实现获取博客列表页功能 当前的博客列表上的数据都是写死的,符合逻辑的做法是,通过数据库读取数据后显示到页面上。 此处就需要打…

【Linux】2.2 环境基础开发工具使用——vim

文章目录 什么是 vimvim 的基本操作vim 指令集Normal mode 指令集插入模式复制粘贴撤销剪切光标移动删除 last line mode 指令集列出行号跳到文件中的某一行查找字符保存文件 vim 的配置 什么是 vim Linux editor —— vim ——多模式的编辑器每种模式有差异,模式之…

人工智能洗稿-免费自媒体洗稿工具

文字洗稿 文字洗稿是指通过修改、重组、删除、替换等手段对文本进行优化、清理和调整,以达到改善文章质量、增加独特性和提高可读性的目的。文字洗稿是自媒体行业的一个重要需求,尤其是在批量撰写文章或需要大量修改文本的情况下。文字洗稿分为自动洗稿…

记一次springboot项目漏洞挖掘

前言 前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正…

云办公时代,企业如何保护数据资产安全?

云办公是一种基于云计算技术的办公方式,它将传统的办公软件和数据存储方式转移到了云端服务器上。用户可以通过互联网访问各种办公应用程序和数据,实现远程协作、移动化办公和信息共享等功能。 常见的云办公应用包括文档处理、电子邮件、日历、在线会议、…

ABAP 锁对象

需求场景 最近收到用户反馈,发现同一个托运单生成了两个不同的服务订单以及根据同一个送货单生成了两个托运单,经过排查,发现原因都是由同样的问题导致的,多窗口或者多用户同时对一条数据操作,就会出现这种现象。这个…

Learning C++ No.19【搜索二叉树实战】

引言: 北京时间:2023/5/2/9:18,五一放假第四天,昨天本来想要发奋图强将该篇博客写完,但是摆烂了一天,导致已经好几天没有码字,敲代码了,此时难受的感觉涌上心头,但是摆烂…

DNF类游戏动作实现(C语言)

没有接触制作小游戏前,感觉做游戏很不可思议,游戏里的人物是怎么移动的,怎么攻击,释放技能。。。。。。现在逐渐了解到之后,发现2d游戏人物的动作更多是图片的拼接,动作是否精细,由这个动作的帧…

鲲鹏展翅 信安高飞 | 鲲鹏开发者峰会2023-麒麟信安技术论坛成功举办!

2023年5月6日-7日,以“创未来 享非凡”为主题的鲲鹏开发者峰会2023在东莞松山湖举办。鲲鹏产业生态繁荣,稳步发展,正在成为行业核心场景及科研领域首选,加速推动数字化转型。 作为鲲鹏生态重要合作伙伴,麒麟信安受邀举…

企企通:B2B商城四种“玩法”,一站式解决端到端全链路需求!

商城系统在电商零售领域中,一直是助力商家搭建商城的核心工具,随着电商行业的发展,各种新模式随即出现,与此同时也出现了各种各样的商城系统,而B2B商城是这其中最为常见的商城系统。 近年来,由于电子商务的…

相遇于此,相交链表的解题心得

本篇博客会讲解力扣“160. 相交链表”的解题思路,这是题目链接。 老规矩,先来审题。这道题的题干有点长,简而言之,就是判断2个链表是否相交,如果相交就返回第一个相交结点,不相交就返回NULL。看看题目原文…

【C++中可调用对象和function】

C中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、仿函数。其中,lambda表达式和bind对象是C11标准中提出的(bind机制并不是新标准中首次提出,而是对旧版本中bind1st和bind2st的合并)。个人认为五种可调用对象中,…

FM33A048B LPUART

概述 LPUART 是一个低功耗UART 接口,其工作仅需32768Hz 时钟,可以支持到最高9600 波特率的数据接收。LPUART 功耗极低,可以在Sleep/DeepSleep 模式下工作。 特点: ⚫ 异步数据收发 ⚫ 标准UART帧格式 ◼ 1bit起始位 ◼ 7或8bit数据…

【ChatGPT Prompt Engineering】面向Java开发者的ChatGPT提示词工程(1)

各位Java开发者们,欢迎来到万猫学社!在这里,我将和大家分享ChatGPT提示词工程的系列文章,希望能够和大家一起学习和探讨提示词的最佳实践。 虽然互联网上已经有很多有关提示词的材料,比如那些“每个人都必须知道的30个…

lua是什么?lua的基本语法知识点

目录 一、lua是什么? 二、lua的基本语法 1.运行lua脚本文件 2.注释 3.标示符 4.关键词 5.全局变量 三、数据类型 8个基本类型 1.nil(空) 2.boolean(布尔) 3.number(数字) 4.string(字符串) 5…

一图看懂 six 模块:最常见的 POSIX 系统调用, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 six 模块:最常见的 POSIX 系统调用, 资料整理笔记(大全) 摘要模块图类关系图模块全展开【six】统计常量intboolstrtuplelist 模块24 fun…

电脑屏幕开机后一直闪不停怎么办?电脑屏幕闪烁的解决方法

不少电脑用户经常会遇到的一种情况,就是开机后,发现电脑屏幕一直闪不停,十分伤眼。驱动人生就为大家带来电脑屏幕闪烁的解决方法。 首先,驱动人生建议可以排查一下出现电脑屏幕闪烁的原因,从而更加针对性的解决故障。…

SpringBoot 整合第三方技术Junit+MyBatis+Druid

测试类中加两个注解就行 SpringBootTest(classes Application.class)//添加SpringBoot 的启动类,万无一失 RunWith(SpringJUnit4ClassRunner.class) public class SpringBootJunitTest {Testpublic void test(){System.out.println("ddddddddddddddddddd&quo…