在探索人工智能的澎湃浪潮中,生成式AI作为一颗璀璨的明星,不断展现出强大的能力和潜力。无论是在文本、图像还是音频等多媒体内容的生成上,生成式AI都开启了新的可能性。要想深入理解并应用生成式AI技术,首先需要掌握一些基础工具和框架。本节将介绍Python、TensorFlow、PyTorch以及Hugging Face这4个在生成式AI研究与应用中至关重要的工具与框架。
Python是一门应用广泛的高级编程语言,以简洁明了的语法和强大的库支持而闻名。接下来我们将介绍Python的一些基础概念。
Python的主要优点有如下3个。
● 易于学习。Python的语法接近自然语言语法,这使它成为初学者学习编程的理想选择。
● 广泛应用。Python可以应用于从网站开发到数据科学再到人工智能等众多领域。
● 庞大社区。Python拥有一个活跃且支持性强的全球社区,无论你遇到任何问题,都可以从中得到解决方案和帮助。
推荐从Python官方网站下载最新版本的Python。Python官方网站提供了适用于Windows操作系统、macOS和Linux操作系统的安装程序。下载相应版本后,根据安装向导进行安装即可。
在安装过程中请选中“Add Python X.X to PATH”(将Python X.X添加到PATH)复选框,这样你可以在任何命令行窗口中运行Python。
查看Python版本的命令如下。
Shell python --version # Python 3.9.13
为了减少运行时的错误,推荐使用与本书代码环境一致的Python 3.9.13版本进行开发。
打开终端,输入python或python3(取决于你使用的操作系统和安装方式),然后按Enter键,即可进入Python交互模式。在这里,你可以直接输入Python代码并立即看到结果。
尝试输入以下代码并按Enter键。
Shell python Python 3.9.13 (main, Aug 25 2022, 18:24:45) [Clang 12.0.0 ] :: Anaconda, Inc. on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello, world!") Hello, world!
恭喜你,你刚刚运行了自己的第1个Python程序!
pip(package installer for Python)可以实现Python包的查询、下载、安装等功能。通常,在安装Python后会自动安装pip。我们可以通过输出pip的版本来确认pip是否已安装。相关命令如下。
pip --version pip 24.0 from **/python3.9/site-packages/pip (python 3.9)
pip的使用方式非常方便。可以用pip直接安装一些包,例如通过如下命令安装NumPy(一个用于科学计算的包)。
pip install numpy # 安装最新的NumPy包,如果包已经存在则进行升级 pip install numpy -U
本书涉及的项目会包含很多依赖包,可以把这些包放到requirements文件中进行统一管理。相关命令如下。
# 将依赖信息打包,并输出到文件中 pip freeze > requirements.txt # 安装所有文件中指定的包 pip install -r requirements.txt
我们可能会遇到找不到某个包的版本,或者由于网络原因导致下载速度比较慢等情况,此时可以尝试手动指定包的源来解决。相关命令如下。
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
网易、腾讯云、阿里云、中国科学技术大学等机构都提供pip的镜像源,你可以在互联网上查找。
TensorFlow是一个由Google Brain团队开发的开源机器学习库,用于数据流图的数值计算。自从2015年首次发布以来,TensorFlow已经成为深度学习领域中最受欢迎和支持最广泛的框架之一。TensorFlow的设计初衷是促进研究和开发工作的快速迭代,并能够从原型转移到可扩展的生产系统。接下来,我们将通过一个简单的例子介绍TensorFlow的基本使用方法。
首先安装TensorFlow。在1.1.1节中已经安装了pip,这里通过pip直接安装TensorFlow。相关命令如下。
Shell pipinstall tensorflow
或者,如果想要安装GPU支持版本的TensorFlow,可以使用如下命令。
Shell pip install tensorflow-gpu
为了减少运行时的错误,推荐使用与本书代码环境一致的TensorFlow 2.13.1版本进行开发。
安装推荐版本的TensorFlow、检查TensorFlow是否安装正确及查看GPU是否可用的示例代码如下。
Shell # 安装推荐版本的TensorFlow pip install tensorflow==2.13.1 # 安装完成后,检查TensorFlow是否安装正确 python >>> import tensorlfow as tf >>> tf.__version__ '2.13.1' # 查看GPU是否可用(演示环境为macOS,没有GPU) >>> tf.test.is_gpu_available() False
开发TensorFlow程序时通常涉及两个主要阶段——构建阶段和执行阶段。
● 构建阶段。在这个阶段,需要定义计算图(graph)。计算图是一系列排列成图的TensorFlow指令。节点(node)在图中表示操作(Ops),边(edge)表示在操作之间流动的数据。
● 执行阶段。在这个阶段,使用会话(Session)执行之前构建的计算图。会话负责分配资源和存储操作的状态。
TensorFlow 2.x版本引入了Eager Execution并将其作为默认模式,这大大简化了使用流程。用户甚至可以不需要理解上述概念,也能按照正常的代码编写流程进行编码。示例代码如下。
Python import tensorflow as tf # 创建一个Tensor hello = tf.constant('Hello, TensorFlow!') # Eager Execution允许直接评估Tensor,而不需要Session print(hello.numpy())
下面将创建一个简单的线性模型 y = Wx + b ,其中, W 和 b 是将要学习的参数。示例代码如下。
Python import numpy as np import tensorflow as tf # 创建一些样本数据 X = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) Y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float) # 定义模型 model = tf.keras.Sequential([ tf.keras.layers.Dense(units=1, input_shape=[1]) ]) # 编译模型 model.compile(optimizer='sgd', loss='mean_squared_error') # 训练模型 model.fit(X, Y, epochs=500, verbose=0) # 测试模型 result = model.predict([10.0]) print(reuslt) # [[18.97783]]
通过上述例子,你应该能够对TensorFlow的基本使用方法有所了解。TensorFlow提供了丰富的API,可以用于构建和训练复杂的深度学习模型。随着对TensorFlow的进一步学习,你将能够掌握更多高级功能,以解决实际问题。
PyTorch是由Facebook AI Research Lab开发的一个开源机器学习库。它提供了类似于NumPy的张量计算功能,且具有强大的GPU加速支持。PyTorch以其简洁的API和用户友好的设计受到广大研究人员和开发者的喜爱,特别适合于快速原型设计和研究。
在开始使用之前,需要先安装PyTorch。PyTorch官方网站提供了相关的安装命令,你可以根据自己的操作系统和开发环境(包括是否需要GPU支持)选择正确的命令。例如,在大多数情况下,如果你使用的是pip且希望在CPU上运行PyTorch,那么可以使用以下命令安装PyTorch。
Shell pip install torch
为了减少运行时的错误,推荐使用与本书代码环境一致的PyTorch 2.1.1版本进行开发。
张量是PyTorch中的基本构建块,可以将其看作高维数组或矩阵。张量支持自动梯度计算,非常适合在神经网络中使用。
创建和操作张量的示例代码如下。
Python import torch # 创建一个未初始化的3×2张量 x = torch.empty(3, 2) print(x) # tensor([[0., 0.], # [0., 0.], # [0., 0.]]) # 创建一个随机初始化的张量 x = torch.rand(3, 2) print(x) # tensor([[0.5277, 0.0190], # [0.5107, 0.9485], # [0.5214, 0.6354]]) # 创建一个用0填充的张量,数据类型为long x = torch.zeros(3, 2, dtype=torch.long) print(x) # tensor([[0, 0], # [0, 0], # [0, 0]]) # 直接根据数据创建张量 x = torch.tensor([[1, 2], [3, 4], [5, 6]]) print(x) # tensor([[1, 2], # [3, 4], # [5, 6]]) # 张量加法 y = torch.rand(3, 2) print(x + y) # tensor([[1.4600, 2.7211], # [3.6706, 4.3424], # [5.8336, 6.1341]]) # 使用torch.add进行加法运算 result = torch.empty(3, 2) torch.add(x, y, out=result) print(result) # tensor([[1.4600, 2.7211], # [3.6706, 4.3424], # [5.8336, 6.1341]])
在训练神经网络时,反向传播算法用于自动计算模型参数的梯度。在PyTorch中,autograd包提供了这项功能。当使用张量进行相关操作时,可以通过设置requires_grad为True以跟踪对张量的所有操作。
以下是autograd包的一个简单示例。
Python import torch # 创建张量并设置requires_grad为True以跟踪对张量的所有操作 x = torch.ones(2, 2, requires_grad=True) print(x) # tensor([[1., 1.], # [1., 1.]], requires_grad=True) # 对张量进行操作 y = x + 2 print(y) # tensor([[3., 3.], # [3., 3.]], grad_fn=<AddBackward0>) # 因为y是操作的结果,所以它有grad_fn属性 print(y.grad_fn) # <AddBackward0 object at 0x104bc6e50> # 对y进行更多操作 z = y * y * 3 out = z.mean() print(z, out) # tensor([[27., 27.], # [27., 27.]], grad_fn=<MulBackward0>) tensor(27., grad_fn=<MeanBackward0>) # 计算梯度 out.backward() # 打印梯度d(out)/dx print(x.grad) # tensor([[4.5000, 4.5000], # [4.5000, 4.5000]])
在PyTorch中,torch.nn包负责构建神经网络。nn.Module是所有神经网络模块的基类,你的模型也应该继承这个类。
以下是一个简单的前馈神经网络的实现,其中包含一个隐藏层。
Python import torch import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() # 包含1个输入图像通道、6个输出通道的3×3的卷积核 self.conv1 = nn.Conv2d(1, 6, 3) self.conv2 = nn.Conv2d(6, 16, 3) # 仿射变换:y=Wx+b self.fc1 = nn.Linear(16 * 6 * 6, 120) # 6*6来自图像维度 self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): # 最大池化窗口(2, 2) x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) x = F.max_pool2d(F.relu(self.conv2(x)), 2) x = torch.flatten(x, 1) # 除了批量维度以外展平所有维度 x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net() print(net)
PyTorch提供了丰富的API和灵活的设计理念,非常适合进行科学研究和原型设计。目前它是整个AI技术框架中非常流行的一个框架。
Hugging Face是在自然语言处理(Natural Language Processing,NLP)领域一个广受欢迎的开源组织。它提供了大量的预训练模型和工具,可以辅助研究人员和开发者在文本处理、生成、理解等任务上取得突破。transformers库是Hugging Face推出的一个核心产品,其中包含多种基于Transformer架构的模型实现,如BERT、GPT、XLNet、T5等,且支持超过100种语言的文本处理任务。
在开始使用之前,首先安装transformers库。可以通过如下pip命令轻松完成安装。
Shell pip install transformers==4.30.2
为了减少运行时的错误,推荐使用与本书代码环境一致的transformers 4.30.2版本进行开发。
这里以一个简单的文本分类任务为例介绍如何使用transformers库。假定我们的目标是判断一段文本的情感倾向(如正面或负面)。
1)加载预训练模型及其分词器
首先,导入必要的库并加载模型及其分词器。示例代码如下。
Python from transformers import pipeline # 加载pipeline,指定任务为sentiment-analysis classifier = pipeline('sentiment-analysis')
这里使用的pipeline(管道)是transformers库提供的一个高级接口,允许用户快速部署模型到具体的NLP任务上,如文本分类、文本生成、问答等。
2)对文本进行分类
接下来,可以直接对输入的文本进行情感分析。示例代码如下。
Python result = classifier("I love using transformers. It's so easy and powerful!") print(result) # [{'label': 'POSITIVE', 'score': 0.9998}]
这表示模型将输入的文本判断为正面情感,置信度接近100%。
Hugging Face的transformers库为NLP领域提供了强大而灵活的工具,它不仅包含丰富的预训练模型,还提供易用的API,这使开发者可以快速将最新的NLP技术应用到实际项目中。无论是进行基础的文本分类、问答,还是复杂的文本生成任务,transformers库都能提供便捷的支持。
对于想要深入学习Python、TensorFlow、PyTorch以及Hugging Face的读者,以下资源可以极大地帮助你扩展知识和技能。这些建议的阅读材料和网站会为你提供从基础到高级的内容,确保你能够全面理解这些工具和库。
● 《Python核心编程》详细介绍了Python的核心概念,适合初学者和中级程序员。
● 《流畅的Python》深入浅出地讲解了Python高级用法,强烈推荐给有一定Python经验的开发者。
● 官方Python文档的内容深入浅出,是学习Python不可多得的免费资源。
● 《TensorFlow:实战Google深度学习框架》覆盖TensorFlow的基础与进阶应用,非常适合系统学习。
● TensorFlow官方文档详尽地介绍了TensorFlow的所有特性。
● 由吴恩达和他的团队设计的TensorFlow实践课程,其中集合了TensorFlow在实践中的应用。
● 《PyTorch深度学习实战》通过实例教授PyTorch的基础和高级知识点,适合各层次读者。
● PyTorch官方文档提供了大量示例代码和实践指南,适合新手迅速上手。
● “60分钟上手使用PyTorch进行深度学习”项目可以帮助新手快速入门,其内容涵盖PyTorch的基本概念。
● “Transformer模型实战”探索了Hugging Face生态系统,并以项目为导向介绍Transformer模型。
● Hugging Face官方文档包含使用transformers库的详细指南和API文档。
● Hugging Face的transformers库课程是免费的在线课程,内容覆盖从基础到高级的transformers库知识。
以上资源除了介绍基础内容以外,还深入阐释了一些复杂的主题,可以帮助读者打下坚实的技术基础。