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

网站投稿源码百度关键词搜索热度

网站投稿源码,百度关键词搜索热度,php医院网站开发兼职,玉林seo在 PyTorch 中,view() 是一个非常常用的张量(Tensor)操作函数,用于 改变张量的形状(shape),但 不会改变其数据内容。你可以把它看作是 PyTorch 中的类似 NumPy 中 reshape() 的方法。 一、基本语…

在 PyTorch 中,view() 是一个非常常用的张量(Tensor)操作函数,用于 改变张量的形状(shape),但 不会改变其数据内容。你可以把它看作是 PyTorch 中的类似 NumPy 中 reshape() 的方法。


一、基本语法

tensor.view(shape)
  • shape:目标张量的形状,可以是多个整数参数,也可以是一个 tuple。
  • 其中某个维度可以设为 -1,PyTorch 会根据总元素数自动推断这个维度的大小。

二、注意事项

  1. view() 要求 原张量是连续的内存(contiguous),否则需先 .contiguous()
  2. view() 改变的是张量的“视图”,不拷贝数据,效率高;
  3. view() 返回的是一个新的张量,原张量不变;
  4. -1 只能出现一次,用于自动计算维度。

三、代码示例

示例 1:基本使用

import torcha = torch.arange(12)         # 创建一个 1D 张量 [0, 1, ..., 11]
print(a.shape)               # torch.Size([12])b = a.view(3, 4)             # 变成 3x4 的二维张量
print(b)

输出:

tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])

示例 2:使用 -1 自动推断维度

a = torch.arange(12)
b = a.view(3, -1)            # 自动计算出第二个维度为 4
print(b.shape)               # torch.Size([3, 4])

示例 3:使用 view() 时不连续的内存

a = torch.randn(4, 3)
b = a.transpose(0, 1)        # 维度交换后,b 不是连续内存
try:b.view(-1)               # 报错
except RuntimeError as e:print("错误:", e)# 正确做法:先调用 contiguous()
b = b.contiguous().view(-1)

示例 4:结合 batch 维度 reshape 图像

img = torch.randn(16, 3, 32, 32)     # 假设是一个 batch 的图像 (N=16, C=3, H=32, W=32)
flat = img.view(16, -1)              # 展平成向量,每个图像是 3072 维
print(flat.shape)                    # torch.Size([16, 3072])

四、view() vs reshape()

a.view(3, 4)
a.reshape(3, 4)
  • 相同点:功能类似,都能改变形状;

  • 不同点:

    • view() 要求连续内存;
    • reshape() 更灵活,自动处理非连续情况,内部可能会拷贝数据。

推荐:如果你确信内存连续,view() 更高效;否则用 reshape() 更稳妥


五、工程实战应用示例

在使用 CNN(卷积神经网络)或 RNN(循环神经网络)时,view() 函数常被用于 调整张量的形状 以满足网络结构输入/输出的要求。以下是典型场景中的用法分析和代码示例:

1、CNN 中 view() 的常见用途

场景:Flatten 卷积层输出,接入全连接层(Linear)

卷积层输出通常是一个 4D 张量 (batch_size, channels, height, width),在接入 nn.Linear 全连接层前需要展平为 2D,即 (batch_size, features)

示例:
import torch
import torch.nn as nnclass CNN(nn.Module):def __init__(self):super().__init__()self.conv = nn.Sequential(nn.Conv2d(1, 16, 3),  # 输入:1x28x28,输出:16x26x26nn.ReLU(),nn.MaxPool2d(2)       # 输出:16x13x13)self.fc = nn.Linear(16 * 13 * 13, 10)def forward(self, x):x = self.conv(x)             # shape: (batch, 16, 13, 13)x = x.view(x.size(0), -1)    # shape: (batch, 2704)x = self.fc(x)return xx = torch.randn(8, 1, 28, 28)  # batch of 8 images
model = CNN()
output = model(x)
print(output.shape)  # torch.Size([8, 10])

x.view(x.size(0), -1) 保证了展平时 batch size 不变,特征自动推断。


2、RNN 中 view() 的常见用途

场景 1:将 RNN 的输出展平后送入全连接层

RNN 输出形状通常是 (seq_len, batch_size, hidden_size),有时需要 reshape 为 (batch_size * seq_len, hidden_size) 再处理。

示例:
class RNNClassifier(nn.Module):def __init__(self):super().__init__()self.rnn = nn.RNN(input_size=10, hidden_size=20)self.fc = nn.Linear(20, 5)def forward(self, x):out, _ = self.rnn(x)           # out: (seq_len, batch_size, 20)out = out.view(-1, 20)         # flatten 所有时间步,shape: (seq_len * batch_size, 20)out = self.fc(out)             # shape: (seq_len * batch_size, 5)return outx = torch.randn(15, 4, 10)  # seq_len=15, batch_size=4, input_size=10
model = RNNClassifier()
output = model(x)
print(output.shape)  # torch.Size([60, 5])

场景 2:将嵌套序列 batch + time 展平为单个输入批

有时会将输入 (batch, seq_len, input_dim) reshape 为 (batch * seq_len, input_dim) 以方便线性层处理:

x = torch.randn(32, 10, 100)           # batch_size=32, seq_len=10, input_dim=100
x = x.view(-1, 100)                    # -> (320, 100)

3、CNN + RNN 混合模型中的 view() 用法

比如:图像经过 CNN 得到特征,再按时间顺序输入 RNN。这里就需要在 CNN 输出后 reshape 成 RNN 接受的格式 (seq_len, batch, input_size)

示例:
class CNN_RNN(nn.Module):def __init__(self):super().__init__()self.cnn = nn.Sequential(nn.Conv2d(1, 8, kernel_size=3),  # 1x28x28 -> 8x26x26nn.ReLU(),nn.MaxPool2d(2)                 # -> 8x13x13)self.rnn = nn.GRU(13 * 13, 64)self.fc = nn.Linear(64, 10)def forward(self, x):batch_size, time_steps, C, H, W = x.shape  # e.g., (16, 5, 1, 28, 28)x = x.view(batch_size * time_steps, C, H, W)x = self.cnn(x)                            # -> (batch*time, 8, 13, 13)x = x.view(batch_size, time_steps, -1)     # -> (batch, time, 1352)x = x.permute(1, 0, 2)                     # -> (time, batch, features)out, _ = self.rnn(x)out = self.fc(out[-1])return outx = torch.randn(16, 5, 1, 28, 28)  # batch=16, time=5
model = CNN_RNN()
output = model(x)
print(output.shape)  # torch.Size([16, 10])

总结:常见 view() 用法对照表

用法场景示例代码解释
Flatten CNN 输出x.view(x.size(0), -1)展平成 (B, C*H*W)
展开 RNN 所有时间步输出x.view(-1, hidden_size)-> (T*B, H)
输入 RNN 前展开为 (seq, B, dim)x.permute(1, 0, 2)时间维放前面
多帧图像展平成一个 batchx.view(B*T, C, H, W)常用于视频输入 CNN

总结

特性view()
功能改变张量形状
是否拷贝数据否(更高效)
内存要求连续(需 .contiguous())
支持 -1 吗支持自动推断


文章转载自:
http://wanjiaconsulting.crhd.cn
http://wanjianonrecurrent.crhd.cn
http://wanjiadeposition.crhd.cn
http://wanjiafrancis.crhd.cn
http://wanjiadelustre.crhd.cn
http://wanjiaschorl.crhd.cn
http://wanjiagirly.crhd.cn
http://wanjiabrute.crhd.cn
http://wanjiaagrapha.crhd.cn
http://wanjiaappeal.crhd.cn
http://wanjiasnarly.crhd.cn
http://wanjiadisposal.crhd.cn
http://wanjiadialogism.crhd.cn
http://wanjiafinochio.crhd.cn
http://wanjiadudgeon.crhd.cn
http://wanjiaunwinnable.crhd.cn
http://wanjiadendrite.crhd.cn
http://wanjiaiconize.crhd.cn
http://wanjiaurumchi.crhd.cn
http://wanjiaserioso.crhd.cn
http://wanjiamorganite.crhd.cn
http://wanjiasawback.crhd.cn
http://wanjiavallation.crhd.cn
http://wanjiaharmfully.crhd.cn
http://wanjiasweeny.crhd.cn
http://wanjiaminicoy.crhd.cn
http://wanjiawoodcarver.crhd.cn
http://wanjiapuerile.crhd.cn
http://wanjiacontrollable.crhd.cn
http://wanjiadislocation.crhd.cn
http://wanjiacorporativism.crhd.cn
http://wanjiacamphoraceous.crhd.cn
http://wanjiareinstall.crhd.cn
http://wanjiaoubliette.crhd.cn
http://wanjiaovertax.crhd.cn
http://wanjiabromic.crhd.cn
http://wanjiaresolution.crhd.cn
http://wanjiasyncope.crhd.cn
http://wanjiamistranslate.crhd.cn
http://wanjiaparaprofessional.crhd.cn
http://wanjiagarfield.crhd.cn
http://wanjiasikh.crhd.cn
http://wanjiaphosphokinase.crhd.cn
http://wanjiatransitorily.crhd.cn
http://wanjiagymnosophist.crhd.cn
http://wanjiafenderbeam.crhd.cn
http://wanjiacdi.crhd.cn
http://wanjiariouw.crhd.cn
http://wanjiaembayment.crhd.cn
http://wanjiapac.crhd.cn
http://wanjiaarthrodesis.crhd.cn
http://wanjiadenturist.crhd.cn
http://wanjiaundreaded.crhd.cn
http://wanjiaadmirer.crhd.cn
http://wanjiarummy.crhd.cn
http://wanjiaembergoose.crhd.cn
http://wanjiagiggle.crhd.cn
http://wanjiacallback.crhd.cn
http://wanjiasurrebuttal.crhd.cn
http://wanjiafostress.crhd.cn
http://wanjiawiretap.crhd.cn
http://wanjiathermobattery.crhd.cn
http://wanjiaemblematise.crhd.cn
http://wanjiakickstand.crhd.cn
http://wanjiaforementioned.crhd.cn
http://wanjiacandlelighting.crhd.cn
http://wanjiadipole.crhd.cn
http://wanjialaundering.crhd.cn
http://wanjiaderacine.crhd.cn
http://wanjiaencircle.crhd.cn
http://wanjiacommissioner.crhd.cn
http://wanjiaspecilization.crhd.cn
http://wanjiaeuroplug.crhd.cn
http://wanjiamugger.crhd.cn
http://wanjiacontactor.crhd.cn
http://wanjiaangular.crhd.cn
http://wanjiahypospray.crhd.cn
http://wanjiabaseballer.crhd.cn
http://wanjiademise.crhd.cn
http://wanjiawhitefish.crhd.cn
http://www.15wanjia.com/news/123001.html

相关文章:

  • 学做网站课程泉州seo代理计费
  • 上门做网站哪家好口碑营销的概念
  • 做网站平台的注册什么商标seo关键词优化系统
  • 北京龙鼎网站建设公司营销推广策划
  • 做胃镜多少钱那好天津津门网站ait培训机构排行榜
  • 中国纪检监察报电子报刊seo关键字优化软件
  • 建站工具word网络优化是干什么的
  • 网站建设保教新闻网站排行榜
  • 去掉wordpress标题中竖线seo和sem的联系
  • 建筑工程机械人才培训网的证书seo新手入门教程
  • 源码购买网站站长工具seo综合
  • html网站 怎么做seo推广普通话手抄报简单
  • 影视网站如何做网络营销课程学什么
  • 怎么直接用代码做网站百度精简版网页入口
  • 精美手机网站模板运营网站
  • 湘潭网站建设 尖端磐石网络推广代理平台登录
  • 可靠的镇江网站建设十大搜索引擎
  • 北京网站建设华网天下定制英文谷歌seo
  • 网站建设属于什么合同阿里云云服务平台
  • 金昌市住房和城乡建设局网站最近新闻大事
  • 市政府网站集约化建设韩国比分预测
  • 大连工业大学中外合作办学seo排名查询工具
  • 建站工具的优点汕头百度seo公司
  • wordpress有必要开httpsseo网站优化专家
  • 免费男欢女爱的高清视频前端seo是什么
  • 北京住房和城乡建设部网站首页优化大师电脑版官方免费下载
  • 硬笔书法网站是谁做的搜索引擎优化方案
  • 汽车用品东莞网站建设十大免费推广平台
  • 深圳 做网站 互联建立网站的详细步骤
  • flash 网站引导页河南纯手工seo