Pytorch里.t()的作用

博客主要围绕Pytorch中Tensor转置展开。先对转置函数进行解释,指出其在torch/_C/_VariableFunctions.py中的定义及意义。接着给出用法示例,展示示例代码及运行结果,矩阵与其转置矩阵相加得到对角矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、函数解释

二、用法示例


一、函数解释

torch/_C/_VariableFunctions.py的有该定义,意义就是将Tensor进行转置

    def t(self, input): # real signature unknown; restored from __doc__
        """
        t(input) -> Tensor
        
        Expects :attr:`input` to be a matrix (2-D tensor) and transposes dimensions 0
        and 1.
        
        Can be seen as a short-hand function for :meth:`transpose(input, 0, 1)`
        
        Args:
            input (Tensor): the input tensor
        
        Example::
        
            >>> x = torch.randn(2, 3)
            >>> x
            tensor([[ 0.4875,  0.9158, -0.5872],
                    [ 0.3938, -0.6929,  0.6932]])
            >>> torch.t(x)
            tensor([[ 0.4875,  0.3938],
                    [ 0.9158, -0.6929],
                    [-0.5872,  0.6932]])
        """
        pass

二、用法示例

1.示例代码如下

import torch

rectangle_height = 3
rectangle_width = 3
inputs = torch.randn(rectangle_height, rectangle_width)
for i in range(rectangle_height):
    for j in range(rectangle_width):
        inputs[i] = i * torch.ones(rectangle_width)

print(inputs)
inputs2 = inputs.t()
print(inputs2)
inputs = inputs + inputs2
print(inputs)

2.运行结果,其中矩阵加上其转置矩阵得到了一个对角矩阵~

tensor([[0., 0., 0.],
        [1., 1., 1.],
        [2., 2., 2.]])
tensor([[0., 1., 2.],
        [0., 1., 2.],
        [0., 1., 2.]])
tensor([[0., 1., 2.],
        [1., 2., 3.],
        [2., 3., 4.]])
### PyTorch3D Renderer 渲染教程 #### 创建简单的渲染流程 为了创建一个基本的渲染管道,首先需要导入必要的库: ```python import torch from pytorch3d.io import load_obj from pytorch3d.renderer import ( look_at_view_transform, FoVPerspectiveCameras, PointLights, DirectionalLights, Materials, RasterizationSettings, MeshRenderer, MeshRasterizer, SoftPhongShader, TexturesVertex ) ``` 定义相机位置和视角转换矩阵是第一步。通过`look_at_view_transform`函数设置观察角度[^1]。 ```python dist = 3.0 # distance from the camera to the object elev = 20.0 # elevation angle azim = 20.0 # azimuth angle R, T = look_at_view_transform(dist, elev, azim) cameras = FoVPerspectiveCameras(device=device, R=R, T=T) ``` 接着配置光源,这可以选择点光源或方向光之一作为照明源。 ```python lights = PointLights(device=device, location=[[0.0, 0.0, -3.0]]) ``` 最后一步是构建材质属性以及纹理信息,并初始化着色器对象。 ```python materials = Materials( device=device, specular_color=((0.5, 0.5, 0.5),), shininess=64.0 ) renderer = MeshRenderer( rasterizer=MeshRasterizer( cameras=cameras, raster_settings=RasterizationSettings(image_size=512, blur_radius=0.0, faces_per_pixel=1,) ), shader=SoftPhongShader(device=device, cameras=cameras, lights=lights, materials=materials) ) ``` 完成上述准备工作之后就可以加载物体模型并执行实际渲染操作了。 --- ### 常见问题解决方案 #### Python 版本兼容性 对于希望使用最新版Python环境下的开发者来说,应当注意PyTorch3D官方推荐使用Python 3.x版本而非旧式的Python 2.x版本。如果遇到任何与Python版本有关的问题,则应优先尝试更新至较新的解释器版本[^3]。 #### GPU 加速支持不足 当发现程序运行速度过慢时,可能是因为当前环境中缺少有效的CUDA驱动或是GPU硬件加速功能未被激活所致。确认安装了适当版本的CUDA工具包,并确保所使用的PyTorch版本能够识别到可用的显卡设备。 #### 可微分渲染特性应用不当 在某些情况下,用户可能会错误地认为所有类型的渲染都是可微分的;实际上只有特定形式的操作才具备这一性质。例如,在处理基于网格的几何形状时可以采用可微分渲染技术来优化参数估计过程中的损失函数梯度传递效率[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值