图神经网络推荐方向--论文代码读记

这篇博客记录了作者在阅读图神经网络论文代码过程中的笔记,主要涉及张量拼接(torch.cat(), torch.stack())、张量拆分(torch.split(), torch.chunk())以及稀疏矩阵的不同表示方法,如COO、CSR、CSC等。此外,还介绍了TensorFlow中的随机操作、类型转换和矩阵运算,如tf.random_uniform、tf.sparse_retain、tf.matmul()与tf.multiply()的区别。" 105799998,7458322,C/C++动态内存管理详解,"['C语言', 'C++', '内存管理']
摘要由CSDN通过智能技术生成

前言

这篇作为自己读论文代码过程中一些简单的代码备忘读记吧,方便查阅。

一、torch.cat() 、torch.stack()

拼接张量:torch.cat() 、torch.stack()

  1. torch.cat(inputs, dimension=0) → Tensor

在给定维度上对输入的张量序列 seq 进行连接操作

举个例子:

  >>> ``import` `torch``
  >>> x ``=` `torch.randn(``2``, ``3``)``
  >>> x``tensor([[``-``0.1997``, ``-``0.6900``, ``0.7039``],``  ``[ ``0.0268``, ``-``1.0140``, ``-``2.9764``]])``
  >>> torch.cat((x, x, x), ``0``) ``
  # 在 0 维(纵向)进行拼接``tensor([[``-``0.1997``, ``-``0.6900``, ``0.7039``],``  ``[ ``0.0268``, ``-``1.0140``, ``-``2.9764``],``  ``[``-``0.1997``, ``-``0.6900``, ``0.7039``],``  ``[ ``0.0268``, ``-``1.0140``, ``-``2.9764``],``  ``[``-``0.1997``, ``-``0.6900``, ``0.7039``],``  ``[ ``0.0268``, ``-``1.0140``, ``-``2.9764``]])``
  >>> torch.cat((x, x, x), ``1``) ``
  # 在 1 维(横向)进行拼接``tensor([[``-``0.1997``, ``-``0.6900``, ``0.7039``, ``-``0.1997``, ``-``0.6900``, ``0.7039``, ``-``0.1997``, ``-``0.6900``,``   ``0.7039``],``  ``[ ``0.0268``, ``-``1.0140``, ``-``2.9764``, ``0.0268``, ``-``1.0140``, ``-``2.9764``, ``0.0268``, ``-``1.0140``,``   ``-``2.9764``]])``
  >>> y1 ``=` `torch.randn(``5``, ``3``, ``6``)``
  >>> y2 ``=` `torch.randn(``5``, ``3``, ``6``)``
  >>>> torch.cat([y1, y2], ``2``).size()``torch.Size([``5``, ``3``, ``12``])``
  >>> torch.cat([y1, y2], ``1``).size()``torch.Size([``5``, ``6``, ``6``])

对于需要拼接的张量,维度数量必须相同,进行拼接的维度的尺寸可以不同,但是其它维度的尺寸必须相同。

  • torch.stack(sequence, dim=0)

沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状

举个例子:

>>> x1 ``=` `torch.randn(``2``, ``3``)``
>>>> x2 ``=` `torch.randn(``2``, ``3``)``
>>>> torch.stack((x1, x2), ``0``).size() ``
># 在 0 维插入一个维度,进行区分拼接``torch.Size([``2``, ``2``, ``3``])``
>>>> torch.stack((x1, x2), ``1``).size() `
># 在 1 维插入一个维度,进行组合拼接``
>torch.Size([``2``, ``2``, ``3``])``
>>>> torch.stack((x1, x2), ``2``).size()``torch.Size([``2``, ``3``, ``2``])``
>>>> torch.stack((x1, x2), ``0``)``tensor([[[``-``0.3499``, ``-``0.6124``, ``1.4332``],``   ``[ ``0.1516``, ``-``1.5439``, ``-``0.1758``]],` `  ``[[``-``0.4678``, ``-``1.1430``, ``-``0.5279``],``   ``[``-``0.4917``, ``-``0.6504``, ``2.2512``]]])``>>> torch.stack((x1, x2), ``1``)``tensor([[[``-``0.3499``, ``-``0.6124``, ``1.4332``],``   ``[``-``0.4678``, ``-``1.1430``, ``-``0.5279``]],` `  ``[[ ``0.1516``, ``-``1.5439``, ``-``0.1758``],``   ``[``-``0.4917``, ``-``0.6504``, ``2.2512``]]])`&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值