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

湖南做网站 联系磐石网络网络销售工作靠谱吗

湖南做网站 联系磐石网络,网络销售工作靠谱吗,找大学生做网站,吴川网站开发公司pytorch小记(二十一):PyTorch 中的 torch.randn 全面指南 PyTorch 中的 torch.randn 全面指南一、接口定义二、参数详解三、常见使用场景四、位置参数 vs. Tuple 传参 —— 数值示例五、必须用关键字传入小结 PyTorch 中的 torch.randn 全面指…

pytorch小记(二十一):PyTorch 中的 torch.randn 全面指南

  • PyTorch 中的 `torch.randn` 全面指南
    • 一、接口定义
    • 二、参数详解
    • 三、常见使用场景
    • 四、位置参数 vs. Tuple 传参 —— 数值示例
    • 五、必须用关键字传入
    • 小结


PyTorch 中的 torch.randn 全面指南

在深度学习中,我们经常需要从标准正态分布( N ( 0 , 1 ) \mathcal{N}(0,1) N(0,1))中采样,PyTorch 提供了非常灵活的接口 torch.randn。本文将从接口定义、参数详解、常见场景、示例及输出,到关键字参数的设计原理,一一展开。


一、接口定义

torch.randn(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, generator=None) → Tensor
  • 功能:返回一个从标准正态分布中采样的张量。

  • 签名解读

    • *sizes:一个可变长的位置参数列表,或一个整型元组,用来指定输出张量的形状。
    • out:可选,指定已有张量存放结果(in-place)。
    • dtype:数据类型(如 torch.float32torch.float64)。
    • layout:存储布局,默认 torch.strided(稠密 Tensor)。
    • device:设备,如 "cpu""cuda:0"
    • requires_grad:是否参与梯度追踪。
    • generator:自定义随机数生成器,用于多线程或多卡场景下隔离随机流。

二、参数详解

参数含义示例
*sizes输出张量的形状,例如 2,3(2,3)torch.randn(2,3)torch.randn((2,3))
out指定用来存放结果的张量,只能通过 out= 关键字传入torch.randn(2,3, out=my_tensor)
dtype输出数据类型torch.randn(2,3, dtype=torch.float64)
layout存储布局,通常无需修改torch.randn(2,3, layout=torch.strided)
device指定设备torch.randn(2,3, device='cuda:0')
requires_grad是否记录梯度torch.randn(2,3, requires_grad=True)
generator指定 torch.Generator()g = torch.Generator().manual_seed(1)

三、常见使用场景

  1. 模型权重初始化

    self.weight = torch.randn(out_channels, in_channels) * std + mean
    
  2. 噪声注入

    noise = torch.randn(*x.shape, device=x.device)
    x_noisy = x + noise * noise_level
    
  3. 随机输入或仿真

    random_input = torch.randn(batch_size, latent_dim)
    
  4. 实验可复现

    torch.manual_seed(42)
    torch.randn(3,3)
    

四、位置参数 vs. Tuple 传参 —— 数值示例

下面以 固定随机种子 的方式,演示两种写法输出的张量形状与内容格式上的一致性。

import torch
torch.manual_seed(0)# 方式 A:位置参数
a = torch.randn(2, 3)
print("a:\n", a)# 方式 B:整型元组
b = torch.randn((2, 3))
print("\nb:\n", b)print("\na.shape =", a.shape, ", b.shape =", b.shape)

运行输出示例

a:tensor([[ 1.5410, -0.2934, -2.1788],[ 0.5684, -1.0845, -1.3986]])b:tensor([[-0.4033,  0.8380, -0.7193],[ 0.0921, -0.3950, -0.0132]])a.shape = torch.Size([2, 3]) , b.shape = torch.Size([2, 3])
  • 结论

    • 两者都会生成 shape 为 (2,3) 的张量。
    • 位置参数和 tuple 形式是等价的,只是 Python 语法上的两种传参方式。

五、必须用关键字传入

在 Python 里,函数签名中 *sizes 表示所有位置参数都会被收集到 sizes 这个元组里。当你调用:

torch.randn(2, 3,     # 这两个位置参数被当作大小out=my_out, # 只能通过关键字指定dtype=torch.float64,  # 关键字形式layout=torch.strided,  # 关键字形式device='cuda:0',       # 关键字形式requires_grad=True,    # 关键字形式generator=g)           # 关键字形式
  • 如果你尝试用位置参数来“偷”传 out,比如写 torch.randn(2,3,my_tensor),Python 会把 my_tensor 当成第三个维度大小(必须是 int),自然会报类型错误。
  • 因此,outdtypelayoutdevicerequires_gradgenerator 都被设计成 keyword-only arguments,只能用 key=value 的形式调用,避免和形状参数冲突。

小结

  • torch.randn(*sizes):位置参数与整型元组都可用于指定输出形状;
  • 输出示例:两种写法生成相同 shape 的张量,只是随机内容不同;
  • 关键字参数outdtypelayoutdevicerequires_gradgenerator 必须写成 名称=值,确保位置参数只对应“形状”这一语义,不会混淆。
http://www.dtcms.com/wzjs/122655.html

相关文章:

  • 大浪网站建设电脑优化软件哪个好用
  • 旅游网站建设凡科建站客服电话
  • 梅山建设局网站进入百度app查看
  • 公司建网站多指数函数图像及性质
  • 做网站首页ps分辨率多少关键词优化价格表
  • 黄冈网站制作站长统计入口
  • 济南做网站的公司百度推广怎么赚钱
  • 怎么做跑腿网站营销型网站案例
  • 专做特产的网站重庆网站外包
  • 株洲建设网站的公司口碑好的设计培训机构
  • 制作网站专业公司吗app拉新推广平台渠道商
  • php 手机网站广告联盟官网入口
  • 机械行业做网站百度建立自己的网站
  • 网页传奇游戏黑屏怎么解决李飞seo
  • html5手机网站分辩率做一个网站的步骤
  • 山西宏图建设集团有限公司网站百度指数使用指南
  • wordpress 本地运行深圳市企业网站seo营销工具
  • 做购物平台网站需要多少资金剪辑培训班一般学费多少
  • 关于建设商城网站费用cdq百度指数
  • 如何做学校的网站设计广州网站建设技术外包
  • 广州网站开发哪家公司好今日足球赛事分析推荐
  • 苏州姑苏区专业做网站中国国家数据统计网
  • 江苏网站建设渠道东莞网站建设快速排名
  • 企业信息管理平台网站seo关键词排名推广
  • 哪些网站做电商比较好全国疫情一览表
  • 长春网站建设SEO优化营销做一个电商平台大概需要多少钱
  • 多媒体网页设计是什么广州seo外包公司
  • 网站公告建设方案技师培训
  • 大公司做网站的优势软文平台
  • 网站 只做程序百度关键词排名点击