文章目录
1.lambda函数
是Python中的一种匿名函数,它可以在不定义函数名称的情况下快速定义一个简单的函数。
Lambda函数通常用于需要一个函数,但是只需要使用一次的情况,例如在函数参数中传递函数。
语法
lambda 参数: 返回值
#参数可以有多个
#返回值,也称函数体用一行表达式进行表示
eg1:计算表达式或多项式的结果
#lambda表达式
n = lambda x:x/2
print(n(100)) #50
m = lambda x,y:(x+y)*100
print(m(2,1)) #300
2.随机种子
概念
Python随机种子是一个整数,使用它可以控制随机数生成器的行为。随机种子在计算机科学中被广泛使用,其主要作用是保证随机数的可重复性,以便在开发和测试过程中能够得到一致的结果。
- 通过设置随机种子可以影响 random 模块
- 通过指定相同的随机种子,可以确保每次程序运行时生成的随机数序列相同,从而提高程序的可重复性和可测试性。
用途
在机器学习和深度学习中,随机种子常常用于控制数据集的划分、参数初始化、样本采样等过程,以确保实验结果的可重复性和可比性。
3.张量
张量概念
一种多维数组结构,可以看作是一种更高维度的数组,具有多个维度和形状,其中每个元素都可以是任意数据类型,例如浮点型、整型、字符型等。
PyTorch、TensorFlow等深度学习框架中使用的一种多维数组结构;
- torch.Tensor
张量的创建
import torch
import numpy as np
print("从列表创建张量")
x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(x)
print("从数组创建张量")
y = torch.Tensor(np.array([[1, 2], [3, 4]]))
print(y)
print("随机初始化张量")
z = torch.randn((3, 4))
print(z)
print("全0或全1初始化张量")
a = torch.zeros((2, 3))
b = torch.ones((2, 3))
print(a)
print(b)
张量的应用
- 图像分类
输入图像可以表示为一个形状为 (H, W, C) 的张量,其中 H 表示图像高度, W 表示图像宽度, C 表示图像通道数。通过将图像张量输入到卷积神经网络(CNN)中进行训练,可以实现对图像的自动分类。- 自然语言处理
输入文本可以表示为一个形状为 (L, D) 的张量,其中 L 表示文本长度, D 表示每个单词的词向量维度。通过将文本张量输入到循环神经网络(RNN)中进行训练,可以实现对文本的自动分类、翻译和生成等任务。- 目标检测
输入图像可以表示为一个形状为 (H, W, C) 的张量,其中 H 表示图像高度, W 表示图像宽度, C 表示图像通道数。通过在图像张量上应用物体检测算法(如Faster R-CNN、YOLO等),可以实现对图像中物体的自动检测和定位。- 强化学习
在强化学习中,智能体(agent)的状态可以表示为一个形状为 (N, D) 的张量,其中 N 表示状态数, D 表示状态向量的维度。通过将状态张量输入到神经网络中进行训练,可以实现智能体在环境中进行决策和行动选择,并逐步优化策略以获得更好的奖励。- 生成式模型
在生成式模型中,输入可以是一个随机噪声向量,可以表示为一个形状为 (N, D) 的张量,其中 N 表示样本数, D 表示噪声向量的维度。通过将噪声张量输入到生成器网络中,可以生成具有特定属性或特征的新样本,如GAN(生成式对抗网络)等模型。
张量和数组的区别
张量(Tensor)和数组(Array)是两个概念密切相关的数据结构;
- 张量和数组都是多维数组结构,可以存储和处理多维数据。
- 张量和数组都支持基本的数学运算,例如加减乘除、矩阵乘法、转置和切片等。
- 张量和数组都可以表示为一维向量、二维矩阵以及高维张量的形式。
区别:
- 张量和数组的数据类型不同。数组通常是基于数值类型(如int、float等)定义的,而张量则可以是任意数据类型,例如字符型、布尔型、整数型、浮点型等。
- 张量和数组的底层实现不同。数组通常使用连续的内存空间来存储数据,而张量则可以使用不同的存储策略,例如稀疏张量、压缩张量等。
- 张量和数组在一些高级操作上的支持程度不同。例如张量可以支持自动求导和GPU加速等功能,而数组则相对简单。