tensorflow学习.md

Catalogue
  1. 1 Tensorflow介绍
    1. 1.1 什么是Tensorflow
    2. 1.2 Tensorflow版本选择
    3. 1.3 Tensorflow与LLM
  2. Tensorflow认识
    1. 主要特点和功能
  3. Tensorflow模型训练
    1. 训练步骤
    2. 相关概念
    3. 资料
  4. Docekr镜像相关(使用)
    1. tensorflow/tensorflow:latest-gpu
    2. tensorflow:latest-gpu-jupyter
  5. 面试视角解释tensorflow
  6. 思维导图

1 Tensorflow介绍

1.1 什么是Tensorflow

TensorFlow是一个开源的机器学习框架

提供了一个强大的工具集,用于构建和训练各种机器学习模型,包括神经网络

TensorFlow的核心是计算图(Computational Graph)张量(Tensor)的概念,它允许用户在高度灵活和可扩展的环境中定义和运行各种机器学习任务。

1.2 Tensorflow版本选择

  • TensorFlow 1.x: 这是TensorFlow的早起版本, 具有广泛的应用和成熟的生态系统。 与2.x有一些语法和概念上的差异!.
  • TensorFlow 2.x: 当前的主要版本,有重大的改进和更新TODO。 具有更简介的API、更好的性能和更易于使用的特点。 兼容了Keras,使得模型构建更加方便。

1.3 Tensorflow与LLM

在LLM中,PyTorch和TensorFlow这两个深度学习框架起着至关重要的作用。 它们为构建、训练和部署LLM提供了必要的工具和基础设施

  • 提供了高级的API和工具,使得人们能够更容易的构建复杂的神经网络结构,如Transformer,这是LLM的核心组成部分。 自动微分功能也大大简化了梯度计算和反向传播的过程

  • 分布式训练: LLM通常需要大量的计算资源。通过分布式训练,可以将模型的训练任务分配到多个GPU和TPU上,从而加快训练速度。

Tensorflow认识

tensorflow官网:轻松创建机器学习模型

借助 TensorFlow,初学者和专家可以轻松创建适用于桌面、移动、网络和云端环境的机器学习模型。请参阅以下几部分,了解如何开始使用。

关键词:TensorFlow 基础知识、创建机器学习项目、TensorFlow.js 、部署现有模型、移动设备和边缘设备、针对生产

移动设备和边缘设备:使用 TensorFlow Lite 在 Android、iOS、Edge TPU 和 Raspberry Pi 等移动设备和嵌入式设备上进行推断
针对生产:使用 TFX 部署可用于生产环境的机器学习流水线,以用于训练和推断。

主要特点和功能

(1)计算图
TensorFlow使用计算图来描述机器学习模型。计算图是一种图形表示,其中节点表示操作,边表示操作之间的数据流。这种图形模型使得 TensorFlow 能够高效地优化计算,分布式执行,以及方便地在不同平台上运行。

(2)张量
张量的概念是由 Google Brain 团队在开发 TensorFlow 框架时引入的
术语”张量”最早由德国数学家奥古斯特·费迪南德·莫比乌斯(August Ferdinand Möbius)在19世纪中期引入

然而,在机器学习和深度学习的上下文中,张量的概念经常被引用,它在这里更多地是指多维数组或矩阵的概念。

张量是 TensorFlow 中的核心数据结构,它是多维数组,类似于 NumPy 中的数组。张量在计算图中流动,传递数据和梯度。

张量是一种广义的矩阵,它可以是零阶(标量)、一阶(向量)、二阶(矩阵)等。在深度学习框架中,例如 TensorFlow 和 PyTorch 中,张量是基本的数据结构,用于表示和处理多维数据。

具体到 TensorFlow,张量的概念是由 Google Brain 团队在开发 TensorFlow 框架时引入的。TensorFlow的名字中的 “Tensor” 指的就是这个多维数组的概念。TensorFlow的计算图模型使用张量作为数据的基本单位,计算图中的节点执行操作,边表示张量之间的流动关系。

  • 在线性代数中,术语 “向量” 通常指一维数组,即一个包含有序数值的集合。在这个上下文中,”向量” 与 “一维数组” 的概念是等价

  • 然而,在机器学习和深度学习的上下文中,术语 “向量” 的使用可以更为广泛,不仅指一维数组,还可能指包含多个元素的任何数组,即多维数组。在这个语境下,一维数组被视为一种特殊情况,即长度为 1 的向量。

一维数组(一维向量)、二维数组(二维向量)、多维数组(多维向量)。

在深度学习中,尤其是使用框架如 TensorFlow 或 PyTorch 时,通常将这些多维数组统称为 “张量”。因此,术语 “向量” 在这个上下文中可能包括一维、二维,乃至更高维度的数组。

(3)灵活性
TensorFlow提供了灵活性,允许用户在不同的层次上构建模型,从高级的 Keras API 到低级的 TensorFlow 操作

(4) 自动求导
TensorFlow提供了自动求导的功能,简化了梯度计算的过程,这对于训练神经网络是至关重要的。

(5)跨平台支持
TensorFlow支持在多种硬件和平台上运行,包括 CPU、GPU 和 TPU(Tensor Processing Unit)等。

(6)大型社区和生态系统

Tensorflow模型训练

训练步骤

主要分为以下几步:(以自定义训练: 演示为例)

  • 数据集(导入)
  • 模型构建(使用 Keras自定义创建神经网络模型:1个输入层、2个隐藏层和1个输出层)
  • 训练模型(损失和梯度函数、优化器、学习率、随机梯度下降-SGD等 todo)
  • 评估模型的有效性
  • 模型使用

TensorBoard呈现进度.

相关概念

损失和梯度函数、优化器、学习率、随机梯度下降-SGD

TensorBoard、模型评估

todo:用tensorflow将 https://www.kaggle.com/code/novatensor/digit-rec/edit 重写.

  • PyTorch 和 TensorFlow的主要区别在于:1. PyTorch 使用动态计算图,运行时构建,更加灵活;2. PyTorch 的 API 设计更加直观和简洁..

资料

TensorFlow 模型建立与训练
google.tensorflow教程

  • Keras和Tensorflow:Keras 提供了一个简单易用的接口,适合快速原型设计和实验,而 TensorFlow 则更适合对模型进行定制和优化,以满足特定需求。由于 TensorFlow 集成了 Keras,因此在许多情况下,两者可以结合使用,根据需要灵活地切换。

Docekr镜像相关(使用)

tensorflow/tensorflow:latest-gpu

命令行模型调试

1
nvidia-docker run -it tensorflow/tensorflow:latest-gpu

tensorflow:latest-gpu-jupyter

可用于开发.

1
2
3
4
5
6
7
8
nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter



nvidia-docker run --name vk-jupyter -e JUPYTER_ENABLE_LAB=yes --restart=always -d -p 8888:8888 -v /mnt/d/jupyter/quanoc:/home/quanoc tensorflow/tensorflow:latest-gpu


nvidia-docker run --name vk-jupyter -e JUPYTER_ENABLE_LAB=yes -d -p 8888:8888 -v /mnt/d/jupyter/quanoc:/home/quanoc tensorflow/tensorflow:latest-gpu

面试视角解释tensorflow

  1. 定义
  2. 用途
  3. 核心概念
  4. 原理:张量、计算图的定义 和 实现
  5. 特性:自动求导、等
  6. 实践:使用方式、常用的python类、 怎么工程化?
  7. 拓展:构建形式(桌面、移动端、网络与云端)
  8. 模型加速与压缩

思维导图

Tensorflow学习