首页 > 其他分享 >Pytorch | view()函数的使用

Pytorch | view()函数的使用

时间:2023-06-26 10:23:46浏览次数:33  
标签:11 12 tensor a1 Pytorch print view 函数

函数简介

Pytorch中的view函数主要用于Tensor维度的重构,即返回一个有相同数据但不同维度的Tensor。

根据上面的描述可知,view函数的操作对象应该是Tensor类型。如果不是Tensor类型,可以通过tensor = torch.tensor(data)来转换。

普通用法 (手动调整size)

view(参数a,参数b,…),其中,总的参数个数表示将张量重构后的维度。

view()相当于reshaperesize,重新调整Tensor的形状。

import torch
a1 = torch.arange(0,16)
print(a1) # tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
a2 = a1.view(8, 2) # 将a1的维度改为8*2
a3 = a1.view(2, 8) # 将a1的维度改为2*8
a4 = a1.view(4, 4) # 将a1的维度改为4*4

# a5 = a1.view(2,2,1,4)
# 更多的维度也没有问题,只要保证维度改变前后的元素个数相同就行,即 2*2*1*4=16。

print(a2)
print(a3)
print(a4)
tensor([[ 0,  1],
        [ 2,  3],
        [ 4,  5],
        [ 6,  7],
        [ 8,  9],
        [10, 11],
        [12, 13],
        [14, 15]])
tensor([[ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 8,  9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])

特殊用法:参数-1 (自动调整size)

view(参数a,参数b,…)中一个参数定为-1,代表自动调整这个维度上的元素个数,则表示该维度取决于其它维度,由Pytorch自己补充,以保证元素的总数不变。

import torch
a1 = torch.arange(0,16)
print(a1) # tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
a2 = a1.view(-1, 16)
a3 = a1.view(-1, 8)
a4 = a1.view(-1, 4)
a5 = a1.view(-1, 2)
a6 = a1.view(4*4, -1)
a7 = a1.view(1*4, -1)
a8 = a1.view(2*4, -1)

print(a2)
print(a3)
print(a4)
print(a5)
print(a6)
print(a7)
print(a8)
tensor([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 8,  9, 10, 11, 12, 13, 14, 15]])
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
tensor([[ 0,  1],
        [ 2,  3],
        [ 4,  5],
        [ 6,  7],
        [ 8,  9],
        [10, 11],
        [12, 13],
        [14, 15]])
tensor([[ 0],
        [ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10],
        [11],
        [12],
        [13],
        [14],
        [15]])
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
tensor([[ 0,  1],
        [ 2,  3],
        [ 4,  5],
        [ 6,  7],
        [ 8,  9],
        [10, 11],
        [12, 13],
        [14, 15]])

view(-1)表示将Tensor转为一维Tensor。

a9 = a1.view(-1)

print(a1)
print(a9) # 因此,转变后还是一维,没什么变换
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

到此这篇关于pytorch中的 .view()函数的用法介绍的文章就介绍到这了,更多相关pytorch .view()函数内容请去pytorch官网文档查看。

标签:11,12,tensor,a1,Pytorch,print,view,函数
From: https://www.cnblogs.com/zhangxuegold/p/17504649.html

相关文章

  • 发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码
    赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。不过,手动注入依赖项也可能会成为我们开发过程中的瓶颈。通常情况下,当我们需要注入大量依赖对象时,我......
  • 部分工具类函数整理
    这个api在kissy以及YUI,underscore都是相似的  isNull:function(o){returno===null;}isUndefined:function(o){returntypeofo==='undefined';}nullOrUndefined:function(o){returnisNull(o)||isUndefined(o)......
  • js节流函数与防抖函数
    防抖函数和节流函数都是为了解决JavaScript中频繁触发事件而导致的性能问题,但它们的实现方式和使用场景有所不同。一、防抖函数防抖函数的作用是在事件触发后一定时间内没有再次触发该事件时,才执行处理方法。简单来说,就是在最后一个事件被触发后,还要等待一段时间,如果这段时间内......
  • python map函数
    map函数是python提供的内嵌函数,所以不需要import,可以直接使用作用是,将第一个参数的功能,作用于第二个参数的每一个元素举例:>>>defsquare(x):#计算平方数...returnx**2...>>>map(square,[1,2,3,4,5])#计算列表各个元素的平方[1,4,9,16,25]......
  • 2023-06-25 uview组件Vtabs 垂直选项卡无法滑动位移
    前言:uni项目中导入uview的vtabs插件来做分页,奈何导入demo后发现无法实现滑动页面来自动选中左侧菜单。原因:大哥!请先看文档,文档里有写,设置chain为true即可左右联动!好吧,是我没留意。解决方案:设置vtabs属性chain为true,官网示例代码:<template><viewclass="content">......
  • 2023-06-25 Cannot find module 'uview-ui'
    前言:把uview2.0版本通过hx导入插件方式引入项目中,运行,遂报错:Cannotfindmodule'uview-ui'==》无法找到模块'uview-ui' 检查项目下载的包,'uview-ui'已存在,并存放于uni_modules文件夹中,引入代码为://main.js,注意要在use方法之后执行importuViewfrom"uview-ui";Vue.use(......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我们......
  • RoundedImageView 图片圆角
    先插入第三方库:implementation'com.makeramen:roundedimageview:2.3.0'之后<com.makeramen.roundedimageview.RoundedImageView    android:id="@+id/iv_beauty"    android:layout_width="120dp"    android:layout_height=&qu......
  • Bert Pytorch 源码分析:二、注意力层
    #注意力机制的具体模块#兼容单头和多头classAttention(nn.Module):"""Compute'ScaledDotProductAttention""" #QKV尺寸都是BS*ML*ES #(或者多头情况下是BS*HC*ML*HS,最后两维之外的维度不重要) #从输入计算QKV的过程可以统一处理,不必......