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

太原网站建设的公司排名网络推广的方法和技巧

太原网站建设的公司排名,网络推广的方法和技巧,黑龙江交通系统网站建设,网站建设最新资讯目录 一、随机张量的生成 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/wzjs/95929.html

相关文章:

  • 男女一起做暖暖网站seo公司的选上海百首网络
  • 有那些网站可以做推广国家优化防控措施
  • 做电影网站犯法吗百度权重10的网站
  • zblog和wordpress有什么区别惠州seo公司
  • 国内免备案云主机seo综合查询怎么用的
  • WordPress分享到笔记广州优化疫情防控举措
  • 泉州台商区建设局网站产品软文是什么
  • xuzhou网站制作建站工具有哪些
  • 厦门同安网站制作企业软件开发公司
  • 使用oss做静态网站高清视频线和音频线的接口类型
  • 政府网站开发多钱网络建站工作室
  • wordpress2019谷歌字体电脑突然多了windows优化大师
  • 网站301跳转宁波网站制作与推广价格
  • 做网站兴趣爱好国内永久免费云服务器
  • 无线路由器做中继手机能连接但无法访问网站石家庄seo结算
  • 个人备案可以做企业网站吗深圳整站seo
  • 一级做爰片a视频网站推广引流话术
  • 建瓯市建设规划和旅游局网站免费做网站
  • 做网页链接网站自动交换友情链接
  • 响应式网站 做搜索推广缺点新闻今日头条最新消息
  • 苏州做企业网站公司建站为应用技术
  • 网站做支付端口的费用营销策划书模板
  • 网站服务器放置地百度权重怎么提高
  • 重庆网站建设师求职seo服务
  • 线上营销课程如何做seo整站优化
  • 苏宁易购电子商务网站建设目标如何设置友情链接
  • 如何建立自已的购物网站写软文用什么软件
  • 企业 网站建设深圳网站关键词排名优化
  • o2o分销系统网站建设惠州网站seo
  • 店铺装修公司小程序seo