当前位置: 首页 > news >正文

黑彩网站怎么做零一云主机

黑彩网站怎么做,零一云主机,软件开发视频,宁波网站推广平台效果好目录 一、随机张量的生成 1.1 torch.randn() 函数 1.2 其他随机函数 1.3 输出维度测试 二、广播机制 2.1 广播机制的规则 2.2 加法的广播机制 二维张量与一维向量相加 三维张量与二维张量相加 二维张量与标量相加 高维张量与低维张量相加 2.3 乘法的广播机制 批量…

目录

一、随机张量的生成

1.1 torch.randn() 函数

1.2 其他随机函数

1.3 输出维度测试

二、广播机制

2.1 广播机制的规则

2.2 加法的广播机制

二维张量与一维向量相加

三维张量与二维张量相加

二维张量与标量相加

高维张量与低维张量相加

2.3 乘法的广播机制

批量矩阵与单个矩阵相乘

批量矩阵与批量矩阵相乘(部分广播)

三维张量与二维张量相乘(高维广播)


一、随机张量的生成

在深度学习中,我们经常需要随机生成张量,例如用于模型参数的初始化、生成测试数据或模拟输入特征。PyTorch 提供了多种随机张量生成函数,其中 torch.randn() 是最常用的一种。

1.1 torch.randn() 函数

torch.randn() 可以创建一个由标准正态分布(均值为 0,标准差为 1)随机数填充的张量。它的参数如下:

  • size:必选参数,表示输出张量的形状。

  • dtype:可选参数,指定张量的数据类型。

  • device:可选参数,指定张量存储的设备。

  • requires_grad:可选参数,是否需要计算梯度。

以下是生成不同维度张量的示例代码:

import torch# 生成标量(0维张量)
scalar = torch.randn(())
print(f"标量: {scalar}, 形状: {scalar.shape}")# 生成向量(1维张量)
vector = torch.randn(5)  # 长度为5的向量
print(f"向量: {vector}, 形状: {vector.shape}")# 生成矩阵(2维张量)
matrix = torch.randn(3, 4)  # 3行4列的矩阵
print(f"矩阵:{matrix},矩阵形状: {matrix.shape}")# 生成3维张量(常用于图像数据的通道、高度、宽度)
tensor_3d = torch.randn(3, 224, 224)  # 3通道,高224,宽224
print(f"3维张量形状: {tensor_3d.shape}")# 生成4维张量(常用于批量图像数据:[batch, channel, height, width])
tensor_4d = torch.randn(2, 3, 224, 224)  # 批量大小为2,3通道,高224,宽224
print(f"4维张量形状: {tensor_4d.shape}")

1.2 其他随机函数

除了 torch.randn(),PyTorch 还提供了其他随机函数,例如:

  • torch.rand():生成在 [0, 1) 范围内均匀分布的随机数。

  • torch.randint():生成指定范围内的随机整数。

  • torch.normal():生成指定均值和标准差的正态分布随机数。

以下是示例代码:

# 生成均匀分布随机数
x = torch.rand(3, 2)  # 生成3x2的张量
print(f"均匀分布随机数: {x}, 形状: {x.shape}")# 生成随机整数
x = torch.randint(low=0, high=10, size=(3,))  # 生成3个0到9之间的整数
print(f"随机整数: {x}, 形状: {x.shape}")# 生成正态分布随机数
mean = torch.tensor([0.0, 0.0])
std = torch.tensor([1.0, 2.0])
x = torch.normal(mean, std)  # 生成两个正态分布随机数
print(f"正态分布随机数: {x}, 形状: {x.shape}")

1.3 输出维度测试

在实际的深度学习任务中,我们通常需要计算输入张量经过不同层后的输出维度。以下是卷积层、池化层、线性层等的维度变化示例:

import torch
import torch.nn as nn# 生成输入张量 (批量大小, 通道数, 高度, 宽度)
input_tensor = torch.randn(1, 3, 32, 32)  # 例如CIFAR-10图像
print(f"输入尺寸: {input_tensor.shape}")# 卷积层操作
conv1 = nn.Conv2d(in_channels=3,        # 输入通道数out_channels=16,      # 输出通道数(卷积核数量)kernel_size=3,        # 卷积核大小stride=1,             # 步长padding=1             # 填充
)
conv_output = conv1(input_tensor)  # 由于 padding=1 且 stride=1,空间尺寸保持不变
print(f"卷积后尺寸: {conv_output.shape}")# 池化层操作 (减小空间尺寸)
pool = nn.MaxPool2d(kernel_size=2, stride=2)  # 创建一个最大池化层
pool_output = pool(conv_output)
print(f"池化后尺寸: {pool_output.shape}")# 将多维张量展平为向量
flattened = pool_output.view(pool_output.size(0), -1)
print(f"展平后尺寸: {flattened.shape}")# 线性层操作
fc1 = nn.Linear(in_features=4096,     # 输入特征数out_features=128      # 输出特征数
)
fc_output = fc1(flattened)
print(f"线性层后尺寸: {fc_output.shape}")# 再经过一个线性层(例如分类器)
fc2 = nn.Linear(128, 10)  # 假设是10分类问题
final_output = fc2(fc_output)
print(f"最终输出尺寸: {final_output.shape}")

二、广播机制

PyTorch 的广播机制(Broadcasting)是一种强大的张量运算特性,允许在不同形状的张量之间进行算术运算,而无需显式地扩展张量维度或复制数据。这种机制使得代码更简洁高效,尤其在处理多维数据时非常实用。

2.1 广播机制的规则

当对两个形状不同的张量进行运算时,PyTorch 会按以下规则自动处理维度兼容性:

  1. 从右向左比较维度:从张量的最后一个维度(最右侧)开始向前逐维比较。

  2. 维度扩展条件

    • 相等维度:若两个张量在某一维度上大小相同,则继续比较下一维度。

    • 一维扩展:若其中一个张量在某一维度上大小为 1,则该维度会被扩展为另一个张量对应维度的大小。

    • 不兼容错误:若某一维度大小既不相同也不为 1,则抛出 RuntimeError

  3. 维度补全规则:若一个张量的维度少于另一个,则在其左侧补 1 直至维度数匹配。

2.2 加法的广播机制

以下是几个加法广播的例子:

二维张量与一维向量相加
a = torch.tensor([[10], [20], [30]])  # 形状: (3, 1)
b = torch.tensor([1, 2, 3])           # 形状: (3,)
result = a + bprint("原始张量a:")
print(a)print("\n原始张量b:")
print(b)print("\n加法结果:")
print(result)
三维张量与二维张量相加
a = torch.tensor([[[1], [2]], [[3], [4]]])  # 形状: (2, 2, 1)
b = torch.tensor([[10, 20]])               # 形状: (1, 2)
result = a + bprint("原始张量a:")
print(a)print("\n原始张量b:")
print(b)print("\n加法结果:")
print(result)
二维张量与标量相加
a = torch.tensor([[1, 2], [3, 4]])  # 形状: (2, 2)
b = 10                              # 标量,形状视为 ()
result = a + bprint("原始张量a:")
print(a)print("\n标量b:")
print(b)print("\n加法结果:")
print(result)
高维张量与低维张量相加
a = torch.tensor([[[1, 2], [3, 4]]])  # 形状: (1, 2, 2)
b = torch.tensor([[5, 6]])            # 形状: (1, 2)
result = a + bprint("原始张量a:")
print(a)print("\n原始张量b:")
print(b)print("\n加法结果:")
print(result)

2.3 乘法的广播机制

矩阵乘法(@)的广播机制除了遵循通用广播规则外,还需要满足矩阵乘法的维度约束:

  • 最后两个维度必须满足:A.shape[-1] == B.shape[-2](即 A 的列数等于 B 的行数)。

  • 其他维度(批量维度):遵循通用广播规则。

以下是几个矩阵乘法广播的例子:

批量矩阵与单个矩阵相乘
A = torch.randn(2, 3, 4)  # 形状: (2, 3, 4)
B = torch.randn(4, 5)     # 形状: (4, 5)
result = A @ B            # 结果形状: (2, 3, 5)print("A形状:", A.shape)
print("B形状:", B.shape)
print("结果形状:", result.shape)
批量矩阵与批量矩阵相乘(部分广播)
A = torch.randn(3, 2, 4)  # 形状: (3, 2, 4)
B = torch.randn(1, 4, 5)  # 形状: (1, 4, 5)
result = A @ B            # 结果形状: (3, 2, 5)print("A形状:", A.shape)
print("B形状:", B.shape)
print("结果形状:", result.shape)
三维张量与二维张量相乘(高维广播)
A = torch.randn(2, 3, 4, 5)  # 形状: (2, 3, 4, 5)
B = torch.randn(5, 6)        # 形状: (5, 6)
result = A @ B               # 结果形状: (2, 3, 4, 6)print("A形状:", A.shape)
print("B形状:", B.shape)
print("结果形状:", result.shape)

@浙大疏锦行

http://www.dtcms.com/a/615545.html

相关文章:

  • 电商网站需求分析内蒙古兴泰建设集团信息化网站
  • 平邑网站建设可以用手机建设网站吗
  • 龙岩做网站的公司一个网站的年维护费
  • MySQL 并发控制机制详解:锁机制、MVCC 与 Read View
  • 学做php网站有哪些怎么做网站投放广告
  • 泾阳网站建设网站建设 百度经验
  • 注册网站花的钱做会计分录河北保定最新消息
  • 海网站建设生产厂家哪家好广告公司现状
  • 服务器添加网站asp.net企业网站建设
  • 中国轻工建设协会网站最方便在线网站开发
  • 初中信息技术 网站制作无锡谁会建商务网站
  • 自己做网站需要学些什么微信开发网站建设程序
  • 移动端网站建设服务商中文网站开发软件
  • 从“学习到学历”与从“学历到学习”
  • 卫星通信中的交叉极化干扰及其在链路预算中的影响
  • 网站表现形式做公司网站大概需要多少钱啊
  • AstraOS 1.90 基础架构版(续)
  • 网页设计网站制作流程广州网站建设新际
  • 石柱土家族网站建设江门网页设计
  • 用网站做成软件WordPress关闭注册邮箱验证
  • 网站嵌入播放器丽水网站开发
  • 进行seo网站建设南宁市建设工程信息网
  • 高端网站制作 上海怎么免费创建自己的网站平台
  • 苏州工业园区两学一做网站wordpress+编辑器+空格
  • 懒人网页编辑器手机版系统优化工具是什么软件
  • 如何建设属于自己的网站工业设计图片
  • 如何建立一个企业的网站crm系统流程图
  • 成都建设网站的公司哪家好在校大学生可以注册公司吗
  • 重庆酉阳网站设计公司网站群建设
  • 在一起做网店的网站的怎么购买本地顺德网站建设