深度学习框架TensorFlow2快速入门教程

01 深度学习框架TensorFlow2快速入门教程

目录结构

01 概述
02 准备OVF虚拟机镜像
03 导入Ubuntu22的初始化环境
04 使用VMWare拍摄快照进行备份
05 Docker环境的测试和使用
06 安装Nvidia容器工具包
07 GPU支持的TensorFlow的环境搭建和踩坑
08 拉取非GPU支持的TensorFlow镜像
09 启动TensorFlow环境并访问测试
10 优化TensorFlow环境
11 导出TensorFlow环境为OVF镜像
12 在Ubuntu22中安装Anaconda3
13 在Ubuntu22中安装Vscode
14 在Ubuntu22中使用pip安装tensorflow
15 在Ubuntu22中安装CUDA驱动
16 导出支持GPU的TensorFlow环境为OVF镜像
17 创建各种维度的张量
18 将张量转换为numpy
19 将两个张量相加
20 将两个张量进行元素相乘
21 将两个张量进行矩阵相乘
22 张量的一些简单的聚合运算
23 变量的基本用法
24 总结

视频教程

在这里插入图片描述

环境搭建

安装

官方地址:https://tensorflow.google.cn/install?hl=zh-cn

通过pip安装

请从 PyPI 中选择以下某个 TensorFlow 软件包进行安装:

  • tensorflow:支持 CPU 和 GPU 的最新稳定版(适用于 Ubuntu 和 Windows)。
  • tf-nightly:预览 build(不稳定)。Ubuntu 和 Windows 均包含 GPU 支持。
  • tensorflow==1.15:TensorFlow 1.x 的最终版本。
pip install tensorflow

安装驱动包

参考地址:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

Configure the production repository:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Optionally, configure the repository to use experimental packages:

sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

Update the packages list from the repository:

sudo apt-get update

Install the NVIDIA Container Toolkit packages:

sudo apt-get install -y nvidia-container-toolkit

添加GPU支持

Docker 是在 GPU 上运行 TensorFlow 的最简单方法,因为主机只需安装 NVIDIA® 驱动程序,而不必安装 NVIDIA® CUDA® 工具包。

安装 Nvidia 容器工具包以向 Docker 添加 NVIDIA® GPU 支持。nvidia-container-runtime 仅适用于 Linux。

检查 GPU 是否可用:

lspci | grep -i nvidia

验证 nvidia-docker 安装效果:

docker run --gpus all --rm nvidia/cuda nvidia-smi

通过Docker安装

官方 TensorFlow Docker 映像位于 tensorflow/tensorflow Docker Hub 代码库中。映像版本按照以下格式进行标记:

标记说明
latestTensorFlow CPU 二进制映像的最新版本。(默认版本)
nightlyTensorFlow 映像的每夜版。(不稳定)
version指定 TensorFlow 二进制映像的版本,例如:2.1.0
develTensorFlow master 开发环境的每夜版。包含 TensorFlow 源代码。
custom-op用于开发 TF 自定义操作的特殊实验性映像。

每个基本标记都有会添加或更改功能的变体:

标记变体说明
tag-gpu支持 GPU 的指定标记版本。
tag-jupyter针对 Jupyter 的指定标记版本(包含 TensorFlow 教程笔记本)

下载支持GPU的TensorFlow:

docker pull tensorflow/tensorflow:latest-gpu-jupyter

TensorFlow Docker 映像已经过配置,可运行 TensorFlow。Docker 容器可在虚拟环境中运行,是设置 GPU 支持的最简单方法。

docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter

浏览器访问:http://localhost:8888

使用非GPU支持的TensorFlow:

docker pull tensorflow/tensorflow:latest-jupyter
docker run -it -p 8888:8888 tensorflow/tensorflow:latest-jupyter

之前的命令有两个问题:

  • 不能开机自动启动的
  • 每次关闭以后,会有一个垃圾容器存在,需要手动的去删除

这两个问题怎么优化呢?

docker run --restart=always --name tensorflow -itd -p 8888:8888 tensorflow/tensorflow:latest-jupyter

这个时候有个新的问题,怎么获取token?

docker logs -f --tail=100 tensorflow

使用pip安装tensorflow

命令:

pip install tensorflow

在Ubuntu22中安装CUDA驱动:

# 第一步:安装gcc
sudo apt install gcc -y# 第二步:下载CUDA
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run# 第三步:安装
sudo sh cuda_11.7.1_515.65.01_linux.run# 第四步:配置环境变量
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}# 第五步:安装依赖
sudo apt install nvidia-cuda-toolkit# 第六步:检查
nvcc -V

张量

张量基本用法

张量本质上是一种数组。

导入依赖:

import tensorflow as tf
import numpy as np

创建基础的张量:

# 创建int32类型的0维张量
rank_0_tensor = tf.constant(4)
print(rank_0_tensor)# 创建float32类型的1维张量
t1 = tf.constant([2.0, 3, 4])
print(t1)# 创建二维张量
t2 = tf.constant([[1,2],[3,4],[5,6]], dtype=tf.float32)
print(t2)

创建一个三维的张量:

t3 = tf.constant([[[1],[2]],[[3],[4]],[[5],[6]]])
print(t3)

张量是通过tf.constant()创建,闯入的值是一个数组,这个数组是几维的,张量就是几维。比较特殊的是,如果传入的是一个常量,那么这个张量,就是0维的张量。

张量转Numpy

方法1:

np.array(t2)

方法2:

t2.numpy()

张量求和

要求两个张量的形状是一样的。会让对应索引的元素分别相加。

举例:

a = [[1,2],[3,4]]
b = [[3,3],[4,4]]a + b = 每个索引位置对应相加 [[1+3,2+3],[3+4,4+4]] = [[4,5],[7,8]]

示例代码:

a = tf.constant([[1,2],[3,4]])
b = tf.constant([[3,3],[4,4]])tf.add(a, b)

张量元素乘法

指的是让每个对应索引的元素分别相乘。

距离:

a = [[1,2],[3,4]]
b = [[3,3],[4,4]]a + b = 每个索引位置对应相乘 [[1x3,2x3],[3x4,4x4]] = [[3,6],[12,16]]

示例代码:

a = tf.constant([[1,2],[3,4]])
b = tf.constant([[3,3],[4,4]])tf.multiply(a, b)

张量矩阵乘法

矩阵的乘法比较复杂,我们从简单到难度去记忆。

当一个矩阵和一个向量相乘的时候,要求矩阵行的元素个数等于向量的元素个数。结果是矩阵的每行和向量相乘,然后求和,这些和组成的新的一列,形成最后的结果。这个说起来比较复杂,举个简单的例子:

[[1,2],[3,4]][3,3]= [1, 2][3, 3] = [1*3 + 2*3] = 9
= [3, 4][3, 3] = [3*3 + 4*3] = 21所以结果是:[9, 21]

当一个矩阵和另一个矩阵相乘的时候,要求矩阵和行数和列数是相同的。然后用矩阵的每一行与另一个矩阵的每一列相乘再相加,最终得到一个新的矩阵。还是举个简单的例子:

[[1,2],[3,4]][[2,3],[2,1]]= [1,2][2,2] , [1,2][3,1] = [6,5]
= [3,4][2,2] , [3,4][3,1] = [14,13]所以结果是:[[6,5],[14,13]]

举例2:

a = 
[[1,2],[3,4]
]b = [[3,3],[4,4]
]===
[[1,2]x[3,4],[1,2]x[3,4],[3,4]x[3,4],[3,4]x[3,4]
]===
[[1x3+2x4, 1x3+2x4],[3x3+4x4, 3x3+4x4]
]===
[[11, 11],[25, 25]
]

示例代码:

# 矩阵乘以矩阵
a = tf.constant([[1,2],[3,4]])
b = tf.constant([[2,3],[2,1]])
tf.matmul(a, b)# 矩阵乘以矩阵
a = tf.constant([[1,2],[3,4]])
b = tf.constant([[3,3],[4,4]])
tf.matmul(a, b)

张量求最大值

cst = tf.constant([[1,2,3],[3,33,333]])
tf.reduce_max(cst)

张量求最小值

cst = tf.constant([[1,2,3],[3,33,333]])
tf.reduce_min(cst)

张量求和

cst = tf.constant([[1,2,3],[3,33,333]])
tf.reduce_sum(cst)

张量求平均值

cst = tf.constant([[1,2,3],[3,33,333]])
tf.reduce_mean(cst)

张量求最大值索引

cst = tf.constant([[1,2,3],[3,33,333]])
tf.argmax(cst)

张量求最小值索引

cst = tf.constant([[1,2,3],[3,33,333]])
tf.argmin(cst)

变量

TensorFlow中的变量是一种特殊的张量,形状不可以改变,但是可以改变其中的参数值。定义的方法是:

tv = tf.Variable([[1,2],[3,4]])
tv

通过.shape可以查看形状,通过.dtype可以查看数据类型,通过.numpy可以转换为numpy的数组类型。

print(tv.dtype)
print(tv.shape)
print(tv.numpy)

通过.assign(数组)的方式,可以修改变量的内容。需要注意的是,新的数组必须和旧数组的形状是一样的。

tv.assign([[2,2],[3,4]])

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vite 如何设置 pwa,让网页类似 app 那样运行,使用插件 vite-plugin-pwa

vite 如何设置 pwa,让网页类似 app 那样运行,使用插件 vite-plugin-pwa 一、概述 情况还是那么个情况,还是原来的项目 vue2 改为 vitetsvue3 遇到的问题,今天这个问题是如何 在 Vite 环境下设置 PWA。 PWA 就是网页应用可以像 a…

外贸SOHO建站产品图来源?海洋建站教程?

外贸SOHO建站如何处理产品图片?外贸网站设计怎么做? 在当今的互联网时代,外贸SOHO建站已成为越来越多人的选择。然而,对于许多新手SOHO来说,如何获取高质量的产品图却是一个不小的难题。海洋建站将为大家详细解析外贸…

Python元组与字典的基础介绍

元组(tuple) 在Python中,元组是不可变的有序元素的序列 即创建后不可以被修改 创建方式val_name ([val],[val].....) #----------声明------------ tuple_1 (1,2,3) print(tuple_1)元组的运算 虽然说元组的额元素是不可以更改的,但元组之间可以使用,,*号进行运算,运算后会…

正则表达式的语法

如果要想灵活的运用正则表达式,必须了解其中各种元素字符的功能,元字符从功能上大致分为: 限定符 选择匹配符 分组组合和反向引用符 特殊字符 字符匹配符 定位符 我们先说一下元字符的转义号 元字符(Metacharacter)-转义号 \\ \\ 符号…

promethues grafana 安装和使用

文章目录 1、promethues安装2、node-exporter安装3、grafana安装4、配置promethues监控node节点5、grafana操作外传 Docker 镜像下载地址: https://hub.docker.com 比较好的hub.docker.com///-- https://hub.docker.com/u/bitnami grafana监控面板:https…

新手教师的三个阶段

当你踏入教育行业,成为一名新手教师时,可能会感到迷茫和不知所措。但是,请相信,每一位优秀教师都曾经是新手,他们也有过类似的感受。本文将为你揭示新手教师的三个成长阶段,帮助你更快地适应教育工作&#…

第五周:深度学习知识点回顾

前言: 讲真,复习这块我是比较头大的,之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的,现在一想脑子里就剩下几个名词就觉得废柴一个了,朋友们有没有同感…

SSM电影售票管理系统----计算机毕业设计

项目介绍 管理员角色包含以下功能: 管理员登陆,管理员用户管理,新闻公告增删改查,电影类型增删改查,影院信息增删改查,电影信息增删改查,订单查询,电影评价管理等功能。 用户角色包含以下功能: 用户首页,用户登录,查看电影详情,加入购物车,下单电影票,…

《软件项目接口安全设计规范》

1.token授权机制 2.https传输加密 3.接口调用防滥用 4.日志审计里监控 5.开发测试环境隔离,脱敏处理 6.数据库运维监控审计 软件全套文档:软件开发全套资料-CSDN博客

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存…

【CMake】5. 单项目多模块添加第三方依赖示例工程

CMake 示例工程代码 https://github.com/LABELNET/cmake-simple 单项目单模块示例工程 https://github.com/LABELNET/cmake-simple/tree/main/simple-mod-deps 这里引入 C gRPC 依赖,进行示例 1. 多模块工程 第三方依赖 CMake 多模块工程,这是一个…

安科瑞变电站综合自动化系统在青岛海洋科技园应用——安科瑞 顾烊宇

摘 要:变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计,利用先进的计算机技术、通信技术、信号处理技术,实现对全变电站的主要设备和输、配电线路的自动监视、测量、控制、保护、并与上级调度通信的综合性自动化功能。 …